【问题标题】:In Meteor, how can I publish a single object from an array field?在 Meteor 中,如何从数组字段中发布单个对象?
【发布时间】:2015-05-26 15:06:55
【问题描述】:

我有以下 Mongo 集合:

{
 id: '123456',
 name: 'GameXYZ',
 reviews: [
   {createdBy: 'Bob', score: 5}, {createdBy: 'John', score: 8}
 ]
}

我想创建一个仅返回 Bob 创建的评论的发布函数:

{
  reviews: [
   {createdBy: 'Bob', score: 5}
  ]
}

我试过这个:

return myCollection.find({'reviews.createdBy': 'Bob'}, {'reviews.$': 1});

问题是 Meteor 返回整个文档。根据他们的文档,“在客户端还没有 $ 和 $elemMatch 等字段操作符。” 我的功能在服务器上运行,所以我不知道为什么它不起作用。它确实在 Mongo Shell 上工作。

我的问题是:谁能推荐一种在 Meteor 中仅发布该数组的单个对象的方法?

【问题讨论】:

  • 试试这个find({"reviews":{"$elemMatch":{"createdBy":"Bob"}}},{"reviews.$.createdBy":1})
  • 我试过了,但不幸的是它在客户端和服务器上都不起作用。它似乎只适用于 Mongo Shell。我最终接受了 Noah 的建议并创建了一个评论集。不管怎么说,还是要谢谢你。希望 Meteor 能尽快支持 elemMatch。

标签: meteor


【解决方案1】:

这最好像 discover meteor 中的 cmets 示例那样完成。创建新集合reviews。你可以把你需要的东西放进去,但它必须有它所审查的东西的 id。这样您就可以使用reviews.find({reviewsId: the id of the collection; in this case 123456}) 发布和查找它

【讨论】:

  • 谢谢诺亚。我已经创建了评论集合,我将在其中添加多个文档,每个文档都有其“用途”字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2011-09-06
  • 1970-01-01
  • 2018-03-07
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多