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

同じドキュメント内のフィールドを使用したMongoDBクエリ?


これには$where演算子を使用できます。概念を理解するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです-

> db.queryInSameDocumentsDemo.insertOne({"StudentDetails":{"StudentName":"John"},"NewStudentDetails":{"StudentName":"Carol"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90096ed3c9d04998abf017")
}
> db.queryInSameDocumentsDemo.insertOne({"StudentDetails":{"StudentName":"Bob"},"NewStudentDetails":{"StudentName":"Bob"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c900a435705caea966c5573")
}

find()メソッドを使用して、コレクションのすべてのドキュメントを表示します。クエリは次のとおりです-

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

以下は出力です-

{
   "_id" : ObjectId("5c90096ed3c9d04998abf017"),
   "StudentDetails" : {
      "StudentName" : "John"
   },
   "NewStudentDetails" : {
      "StudentName" : "Carol"
   }
}
{
   "_id" : ObjectId("5c900a435705caea966c5573"),
   "StudentDetails" : {
      "StudentName" : "Bob"
   },
   "NewStudentDetails" : {
      "StudentName" : "Bob"
   }
}

ケース1 −これは同じドキュメント内のフィールドを含むクエリです。ここでは、等式(==)演算子を使用しました。クエリは次のとおりです-

> db.queryInSameDocumentsDemo.find( { $where: "this.StudentDetails.StudentName == this.NewStudentDetails.StudentName" } ).pretty();

以下は出力です-

{
   "_id" : ObjectId("5c900a435705caea966c5573"),
   "StudentDetails" : {
      "StudentName" : "Bob"
   },
   "NewStudentDetails" : {
      "StudentName" : "Bob"
   }
}

ケース2 −これは同じドキュメント内のフィールドを含むクエリです。演算子と等しくないものを使用しました。

クエリは次のとおりです-

> db.queryInSameDocumentsDemo.find( { $where: "this.StudentDetails.StudentName != this.NewStudentDetails.StudentName" } ).pretty();

以下は出力です-

{
   "_id" : ObjectId("5c90096ed3c9d04998abf017"),
   "StudentDetails" : {
      "StudentName" : "John"
   },
   "NewStudentDetails" : {
      "StudentName" : "Carol"
   }
}

  1. ネストされたドキュメントを更新するMongoDBクエリ?

    ネストされたドキュメントを更新するには、update()を使用し、その中でドット表記を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo607.insertOne( ...    { ...       id:1, ...       "Info1" : { ...          "Name" : "Chris", ...      

  2. MongoDBを使用して埋め込みドキュメントの配列でクエリをフィルタリングしますか?

    これには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo736.insertOne( ...    { ...       "_id": "101", ...       "details1": [ ...          { ...             &q