簡體   English   中英

從嵌套的mongodb集合中獲取數據

[英]Fetch data from nested mongodb collection

我有一個如下的集合。 我想在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"
            },

        ]

}

您可以使用以下mongodb查詢

{ "title.users.fb_user_id" : 2001 }

我可以使用elemMatch查詢運算符進行更復雜的查詢

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

這樣的事情。 希望能幫助到你

如果您只想返回嵌入數組中找到的一個匹配項(而不是數組的其余部分),則需要:

  • 在您的應用程序代碼中處理此問題(迭代users數組並找到匹配的元素)

  • 使用新的位置運算符支持( SERVER-828 ),它將在2.2版本的MongoDB中提供。

使用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"
        }
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM