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

MongoDBでタグごとにドキュメントを取得するにはどうすればよいですか?


これには$elemMatch演算子を使用できます。ドキュメントを使用してコレクションを作成しましょう

> db.getDocumentsByTagsDemo.insertOne({"Tags":["Tag-1", "Tag-2", "Tag-3"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9eb4d5d628fa4220163b79")
}
> db.getDocumentsByTagsDemo.insertOne({"Tags":["Tag-2", "Tag-4", "Tag-5"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9eb4d5d628fa4220163b7a")
}
> db.getDocumentsByTagsDemo.insertOne({"Tags":["Tag-6", "Tag-4", "Tag-3"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9eb4d6d628fa4220163b7b")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです

> db.getDocumentsByTagsDemo.find().pretty();

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

{
   "_id" : ObjectId("5c9eb4d5d628fa4220163b79"),
   "Tags" : [
      "Tag-1",
      "Tag-2",
      "Tag-3"
   ]
}
{
   "_id" : ObjectId("5c9eb4d5d628fa4220163b7a"),
   "Tags" : [
      "Tag-2",
      "Tag-4",
      "Tag-5"
   ]
}
{
   "_id" : ObjectId("5c9eb4d6d628fa4220163b7b"),
   "Tags" : [
      "Tag-6",
      "Tag-4",
      "Tag-3"
   ]
}

以下は、タグでドキュメントを取得するためのクエリです

> db.getDocumentsByTagsDemo.find({Tags: { $elemMatch: { $eq: "Tag-2" } }}).pretty();

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

{
   "_id" : ObjectId("5c9eb4d5d628fa4220163b79"),
   "Tags" : [
      "Tag-1",
      "Tag-2",
      "Tag-3"
   ]
}
{
   "_id" : ObjectId("5c9eb4d5d628fa4220163b7a"),
   "Tags" : [
      "Tag-2",
      "Tag-4",
      "Tag-5"
   ]
}

以下は、特定のタグのみを検索するためのクエリです

> db.getDocumentsByTagsDemo.find({Tags: "Tag-5"}).pretty();

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

{
   "_id" : ObjectId("5c9eb4d5d628fa4220163b7a"),
   "Tags" : [
      "Tag-2",
      "Tag-4",
      "Tag-5"
   ]
}

  1. MongoDBの配列に基づいてドキュメントをフィルタリングする方法は?

    配列に基づいてドキュメントをフィルタリングするには、$elemMatchを使用します。 $ elemMatch演算子は、配列フィールドを含むドキュメントと一致します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo453.insertOne( ... { _id: 101, details: [ { Name: "David", Marks: 60 }, { Name: "Mike", Marks: 55} ] } ... ) { "acknowledged" : true, "inserte

  2. MongoDBで配列交差のデータを取得するにはどうすればよいですか?

    MongoDBでの配列の相互作用については、aggregate()で$setIntersectionを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo625.insertOne( ...    { ...       Name: "John", ...       Marks: [56,98,60] ...    } ... ); {    "acknowledged" : true, &nbs