1

データベース内のどのドキュメントが同じフィールド値を持っているかを確認するためのクエリを作成したいと考えています。

たとえば、100 個のドキュメントが保存されており、そのうちの 2 つは次のようになっています。

文書 1:

{
    "_id":32143242,
    "specialField":12
}

文書 2:

{
    "_id":787878,
    "specialField":12
}

ID や specialField-Value がわからない場合、この 2 つのドキュメントを取得するにはどうすればよいでしょうか。

4

1 に答える 1

0

これは、 MongoDB 集計フレームワークを使用して実行できるグループ化操作です。

サンプルデータ

> db.foo.find().pretty();
{ "_id" : ObjectId("515ead9c7bb40c6a51b16a68"), "Value" : 12 }
{ "_id" : ObjectId("515ead9d7bb40c6a51b16a69"), "Value" : 12 }
{ "_id" : ObjectId("515ead9f7bb40c6a51b16a6a"), "Value" : 14 }
{ "_id" : ObjectId("515eada07bb40c6a51b16a6b"), "Value" : 8 }

サンプルのグループ化操作

> db.foo.aggregate({$group : 
    { _id: "$Value", 
      count : {$sum : 1}, 
      ids: { $addToSet : "$_id" } } });

これは、等しいグループValueとそのカウントおよびそれぞれの IDを返します。

{
        "result" : [
                {
                        "_id" : 8,
                        "count" : 1,
                        "ids" : [
                                ObjectId("515eada07bb40c6a51b16a6b")
                        ]
                },
                {
                        "_id" : 14,
                        "count" : 1,
                        "ids" : [
                                ObjectId("515ead9f7bb40c6a51b16a6a")
                        ]
                },
                {
                        "_id" : 12,
                        "count" : 2,
                        "ids" : [
                                ObjectId("515ead9d7bb40c6a51b16a69"),
                                ObjectId("515ead9c7bb40c6a51b16a68")
                        ]
                }
        ],
        "ok" : 1
}

集約フレームワークのドキュメントを読み、その制限を理解する必要があります。

于 2013-04-05T11:00:56.620 に答える