MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの別のフィールドでグループ化された値を検索しますか?


別のフィールドでグループ化するには、$groupを$projectと一緒に使用します。まず、ドキュメントを使用してコレクションを作成しましょう-

> db.demo374.insertOne(
...    {
...
...       "Name" : "Chris",
...       "HobbyDetails" : [
...          "Reading Book",
...          "Playing Football"
...       ],
...       "CountryName" : "US"
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5a04402ae06a1609a00b04")
}
> db.demo374.insertOne(
...    {
...
...       "Name" : "Chris",
...       "HobbyDetails" : [
...          "Browsing Internet",
...          "Playing Football"
...       ],
...       "CountryName" : "US"
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5a04402ae06a1609a00b05")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo374.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e5a04402ae06a1609a00b04"), "Name" : "Chris", "HobbyDetails" : [ "Reading Book", "Playing Football" ], "CountryName" : "US" }
{ "_id" : ObjectId("5e5a04402ae06a1609a00b05"), "Name" : "Chris", "HobbyDetails" : [ "Browsing Internet", "Playing Football" ], "CountryName" : "US" }

以下は、MongoDBの別のフィールドでグループ化された値を検索するためのクエリです-

> db.demo374.aggregate([
...    {$match : { "CountryName" : "US"}},
...    {$group : {"_id" : "$Name", "HobbyDetails" : {$addToSet : "$HobbyDetails"}}},
...    {$project : {"_id" : 0, "Name" : "$_id", "HobbyDetails" : {$reduce : {input : "$HobbyDetails", initialValue : [], in: { $concatArrays : ["$$value", "$$this"] }}}}}
... ]).pretty()

これにより、次の出力が生成されます-

{
   "Name" : "Chris",
   "HobbyDetails" : [
      "Browsing Internet",
      "Playing Football",
      "Reading Book",
      "Playing Football"
   ]
}

  1. MongoDBでオブジェクトのフィールド配列値をクエリしていますか?

    arrayFieldNameとvalueを使用して、オブジェクトのフィールド配列値をクエリします。ドキュメントを使用してコレクションを作成しましょう- > db.demo295.insertOne({"status":["Active","Inactive"]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5e4d4ea65d93261e4bc9ea39")

  2. 真または偽の値に基づいて検索するMongoDBクエリ

    真または偽の値に基づいて検索するには、find()で$existsを使用します。同じタスクにはドット表記も必要です。 まず、ドキュメントを使用してコレクションを作成しましょう- > db.demo367.insertOne( ...    { "Id" : "102", ...    "details" : [ { "Name" : "David"}, ...    { "Age" : 23, "C