在mongoDB中检索数组中的所有元素
如何将数组分配给变量。我能够返回我想要的文档,但无法具体获取特定字段中数组中的所有元素。该字段称为“likes” 用于筛选所需文档的查询:在mongoDB中检索数组中的所有元素,mongodb,meteor,Mongodb,Meteor,如何将数组分配给变量。我能够返回我想要的文档,但无法具体获取特定字段中数组中的所有元素。该字段称为“likes” 用于筛选所需文档的查询: Posts.find({}, {owner: Meteor.user()}) 我想从Posts集合中检索名为“likes”的数组字段中的所有元素。(likes字段中的每个元素都是一个对象ID) 我尝试了各种操作符,例如'likes'字段的$all和$in,并在console.log中进行了测试,但我无法获得ID。根据mongo文档,我需要在操作符中指定一个
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”字段中检索所有元素,以便进行另一个查询以返回结果
我正在运行meteor 0.9+您可以指定希望光标包含的字段,因此可以将其限制为
likes
字段:
var allLikes = Posts.find({
owner: Meteor.user()
}, {
fields: {likes: 1},
}).fetch();
这将为您提供一个包含所有帖子的数组,其中每个帖子只包含likes
数组:
[{
likes: ['A', 'B', 'C'],
}, {
likes: ['D', 'E'],
}];
等等,我知道你想要一个包含所有objectid的数组。为此,可以使用下划线转换数组。获得结果的方法有很多,例如:
var likes = _.reduce(allLikes, function(memo, post) {
return memo.concat(post.likes);
}, []);
尝试一下:
var myPosts=Posts.find(
{所有者:Meteor.user()},
{字段:{likes:1}}
).fetch()
var myLikes=u0.chain(myPosts)
.pluck(‘喜欢’)
.flatte()
.uniq()
.value();
首先,我们获取当前用户是所有者的所有帖子。每个帖子将包含一个\u id
和一个likes
数组。接下来,我们通过以下方式提取所有相似项:
。这就得到了一个数组
uniq
,这样我们就只有独特的喜好(不是必需的,但可能是一种优化)myLikes
。例如:
var likes = _.reduce(allLikes, function(memo, post) {
return memo.concat(post.likes);
}, []);
Likes.find({u id:{$in:myLikes}})
以下是一些测试数据,以防
myPosts
为空:
var myPosts=[
{{u id:1,likes:[1,2,3]},
{{u id:2,likes:[2,3,4]},
{{u id:3,喜欢:[4,5,6]}
];
在这种情况下,
myLikes
将是:[1,2,3,4,5,6]
我刚刚意识到,在Posts.find查询中,我必须插入一个空的条件,它才能工作。因此,这一变化产生了以下结果
var myPosts = Posts.find(
{},
{owner: Meteor.user()},
{fields: {likes: 1}}
).fetch()
不管怎样,如果没有你的投入,我不可能得到这个结果,所以再加上一个给你,大卫 每个帖子只有一个数组。里面是一个对象ID列表。所以下划线方法是没有必要的,但感谢您指出,我可以记住它,以备将来使用。从一个数组,比如你写的['a','B','C'],我想把它放在一个变量AllLikes中。然后,查询另一个集合表单;本质上,我试图检索“likes”字段数组中的所有值。然后使用这些值查询另一个集合。嗨,大卫,我已经试过了。将myLikes变量放入console.log和另一个查询后,没有返回任何值。可能是由于文档不存在或未发布,
myPosts
对您来说是一个空数组。假设我得到了正确的数据结构,myLikes
代码是正确的。我在答案的底部添加了一些测试数据以进行验证。谢谢,所以。该死的。“非常感谢!”戴维德维尔顿,谢谢!我已经找了好几个月了!