使用同一文件中的欄位進行 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"
   }
}

更新於: 2019 年 7 月 30 日

138 次瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.