我有一个如下的集合。我想仅在fb user_id为2001的情况下获取用户数据。
我如何在PHP中执行此操作?
{
"_id": ObjectId("5024db89b7ac1c900e000000"),
"title": "This is a title",
"users": [
{
"name": "John",
"email": "john@example.com",
"fb_user_id": "1000"
},
{
"name": "Jack",
"email": "jack@example.com",
"fb_user_id": "2001"
},
]
}
答案 0 :(得分:2)
您可以使用以下mongodb查询
{ "title.users.fb_user_id" : 2001 }
我可以使用elemMatch查询运算符
进行更复杂的查询{
"title.users" : {$elemMatch : { "fb_user_id" : 2001, "name" : "John" } }
}
这样的事情。希望它有所帮助
答案 1 :(得分:1)
如果您只想返回嵌入数组中找到的一个匹配项(而不是数组的其余部分),则需要:
在您的应用程序代码中处理此问题(迭代users
数组并找到匹配的元素)
使用2.2版MongoDB中提供的新位置运算符支持(SERVER-828)。
使用mongo
2.2 shell中的位置运算符的示例:
> db.mycoll.find({'users.fb_user_id':"2001"}, {_id:0, 'users.fb_user_id.$':1})
{
"users" : [
{
"name" : "Jack",
"email" : "jack@example.com",
"fb_user_id" : "2001"
}
]
}