Computer >> Máy Tính >  >> Lập trình >> MongoDB

Truy vấn MongoDB với các trường trong cùng một tài liệu?

Bạn có thể sử dụng toán tử $ where cho việc này. Để hiểu khái niệm, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> 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")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

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

Sau đây là kết quả -

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

Trường hợp 1 - Đây là câu truy vấn với các trường trong cùng một tài liệu. Chúng tôi đã sử dụng toán tử bình đẳng (==) ở đây. Truy vấn như sau -

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

Sau đây là kết quả -

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

Trường hợp 2 - Đây là câu truy vấn với các trường trong cùng một tài liệu. Chúng tôi đã sử dụng toán tử không bằng.

Truy vấn như sau -

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

Sau đây là kết quả -

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