如何将数组赋给变量。我可以返回我想要的文档,但无法在特定字段中具体获取数组中的所有元素。这个字段叫做“likes”。
我要筛选文档的查询:
Posts.find({}, {owner: Meteor.user()})
我想从posts集合中检索名为'likes'的数组字段中的所有元素。(likes字段中的每个元素都是一个对象id)
我尝试了各种各样的操作符,比如'likes'字段中的$all和$in,并在console.log中进行了测试,但是我无法获得ID。根据mongo文档,我需要在操作符中指定一个元素,但我不希望这样。我只想要里面的任何东西。
var likers = Posts.find({}, {owner: Meteor.user()}, {likes: {$in: [] }})
基本上,我试图从“likes”字段中检索所有元素,以便我可以进行另一个查询以返回结果。
我正在运行流星0.9+
最佳答案
试试看:
var myPosts = Posts.find(
{owner: Meteor.user()},
{fields: {likes: 1}}
).fetch()
var myLikes = _.chain(myPosts)
.pluck('likes')
.flatten()
.uniq()
.value();
首先,我们获取当前用户是所有者的所有帖子。每个帖子将包含一个
_id
和一个likes
数组。接下来,我们将通过以下方式提取所有喜欢的内容:从每个文档中删除每个
likes
。这会得到一个数组。将数组展平成一个喜欢的数组。
运行
uniq
以便我们只有唯一的喜欢(不需要,但可以是一个优化)。然后可以在后续查询中使用
myLikes
。例如:Likes.find({_id: {$in: myLikes}})
以下是
myPosts
为空时的一些测试数据:var myPosts = [
{_id: 1, likes: [1, 2, 3]},
{_id: 2, likes: [2, 3, 4]},
{_id: 3, likes: [4, 5, 6]}
];
在这种情况下
myLikes
将是:[ 1, 2, 3, 4, 5, 6 ]
关于mongodb - 检索mongoDB中数组中的所有元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26281323/