MongoDBクエリを動的に構築する方法は?
クエリを動的に構築するには、スクリプトを作成する必要があります。まず、ドキュメントを使用してコレクションを作成しましょう-
> 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")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.dynamicQueryDemo.find().pretty();
これにより、次の出力が生成されます-
{
"_id" : ObjectId("5cef5c5def71edecf6a1f69a"),
"Name" : "John",
"Subject" : [
"MongoDB",
"MySQL"
]
}
{
"_id" : ObjectId("5cef5c73ef71edecf6a1f69b"),
"Name" : "John",
"Subject" : [
"C",
"C++"
]
}
{
"_id" : ObjectId("5cef5c8bef71edecf6a1f69c"),
"Name" : "John",
"Subject" : [
"MongoDB",
"Java"
]
} 以下は、MongoDBクエリを動的に構築するためのクエリです-
> 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,
}
}]); これにより、次の出力が生成されます-
{ "_id" : ObjectId("5cef5c5def71edecf6a1f69a"), "Name" : "John", "Subject" : [ "MongoDB", "MySQL" ] }
{ "_id" : ObjectId("5cef5c8bef71edecf6a1f69c"), "Name" : "John", "Subject" : [ "MongoDB", "Java" ] } -
MongoDBのサブドキュメントで検索クエリを実行するにはどうすればよいですか?
サブドキュメントの場合は、ドット表記を使用します。まず、ドキュメントを使用してコレクションを作成しましょう- > db.demo537.insertOne({"details":{"SubjectName":"MongoDB"}});{ "acknowledged" : true, "insertedId" : ObjectId("5e8c8a10ef4dcbee04fbbc05") } > db.demo537
-
「like」に似たMongoDBをクエリする方法は?
「like」と同様に実装するには、MongoDBで//と一緒にfind()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo686.insertOne({"FirstName":"Robert"}); { "acknowledged" : true, "insertedId" : ObjectId("5ea55182a7e81adc6a0b395c") } > db.demo686.insertO