我的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或什么?
由于
答案 0 :(得分:0)
将您的查询更改为:
Meteor.users.find({_id: {$in: _.pluck(Meteor.user().profile.friendRequests, 'fromUserId') }});
推理:
friendRequests
是一个对象数组,$ in想要一个字符串数组(ids),使用_.pluck
你能够传递一个对象数组,然后告诉{{1} }仅返回数组中每个对象的字段_
。
评论中的问题(“如果我只想从”接受“为假的朋友请求中获取ID,该怎么办?):
fromUserId