Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách xây dựng động truy vấn MongoDB

Để xây dựng truy vấn động, viết hàm JavaScript trong shell MongoDB. Tạo collection:

> db.dynamicQueryDemo.insertOne({ "Name": "John", "Subject": ["MongoDB", "MySQL"] });
{ "acknowledged": true, "insertedId": ObjectId("5cef5c5def71edecf6a1f69a") }
> db.dynamicQueryDemo.insertOne({ "Name": "John", "Subject": ["C", "C++"] });
{ "acknowledged": true, "insertedId": ObjectId("5cef5c73ef71edecf6a1f69b") }
> db.dynamicQueryDemo.insertOne({ "Name": "John", "Subject": ["MongoDB", "Java"] });
{ "acknowledged": true, "insertedId": ObjectId("5cef5c8bef71edecf6a1f69c") }

Hiển thị document:

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

Kết quả.

Hàm xây dựng truy vấn động (nếu mảng rỗng dùng $ngược lại $in):

> function findDocument(subject) {
  var find = {};
  if (subject.length == 0)
    find["$nin"] = subject;
  else
    find["$in"] = subject;
  return find;
}
> var sub = ["MySQL", "MongoDB"];
> var myDoc = findDocument(sub);
> db.dynamicQueryDemo.aggregate([{
  $match: { "Subject": myDoc }
}]);

Kết quả (document có Subject chứa MySQL hoặc MongoDB):

{
  "_id": ObjectId("5cef5c5def71edecf6a1f69a"),
  "Name": "John",
  "Subject": [ "MongoDB", "MySQL" ]
}
{
  "_id": ObjectId("5cef5c8bef71edecf6a1f69c"),
  "Name": "John",
  "Subject": [ "MongoDB", "Java" ]
}