Để 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" ]
}