1

我有一个像下面这样的集合。我只想获取 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"
            },

        ]

}
4

2 回答 2

2

您可以使用以下 mongodb 查询

{ "title.users.fb_user_id" : 2001 }

对于更复杂的查询,您可以使用 elemMatch 查询运算符

{ 
   "title.users" : {$elemMatch : { "fb_user_id" : 2001, "name" : "John" } }
}

类似的东西。希望能帮助到你

于 2012-08-10T14:11:25.240 回答
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"
        }
    ]
}
于 2012-08-14T02:42:07.840 回答