Mongodb:在嵌套数组属性中查找ids $

时间:2014-07-02 20:29:50

标签: javascript arrays mongodb meteor

我的mongodb中的用户有以下数据结构:

{
    _id: "someId",
    profile: {
        username: "oliv",
        friendRequests: [
            { fromUserId: "anId", accepted: false, created: "someDate"},
            { fromUserId: "otherId", accepted: true, created: "otherDate"}
        ]
}

我希望检索我已登录用户的朋友请求中引用的用户对象。 所以我试过这样的事情:

Meteor.users.find({_id: {$in: Meteor.user().profile.friendRequests.fromUserId}});
// FYI: Meteor.users is the collection and Meteor.user() retrieves the current user

但它没有用。我因为嵌套数组而假设它  有没有办法告诉mongo迭代fromUserId或什么?

由于

1 个答案:

答案 0 :(得分:0)

将您的查询更改为:

Meteor.users.find({_id: {$in: _.pluck(Meteor.user().profile.friendRequests, 'fromUserId') }});

推理:

friendRequests是一个对象数组,$ in想要一个字符串数组(ids),使用_.pluck你能够传递一个对象数组,然后告诉{{1} }仅返回数组中每个对象的字段_

评论中的问题(“如果我只想从”接受“为假的朋友请求中获取ID,该怎么办?):

fromUserId

Underscore filter docs