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

埋め込み配列内で見つかった 1 つの一致のみを返したい (配列の残りの部分は返さない) 場合は、次のいずれかを行う必要があります。

  • アプリケーション コードでこれを処理します (配列を繰り返しusers、一致する要素を見つけます)。

  • MongoDB の 2.2 バージョンで利用可能になる新しい位置演算子サポート ( SERVER-828 ) を使用します。

mongo2.2 シェルで位置演算子を使用した例:

> 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 に答える