MongoDBコレクションのオブジェクト配列でクエリされた要素のみを取得しますか?
射影演算子$elemMatchを使用して、MongoDBコレクションのオブジェクト配列内のクエリされた要素をフィルタリングできます。 MongoDBのオブジェクト配列でクエリされた要素のみを取得するには、最初にドキュメントオブジェクト配列を使用してコレクションを作成します。
クエリは次のとおりです。
> db.objectArray.insert({"Persons":[
{"PersonName":"Adam","PersonSalary":25000},{"PersonName":"Larry","PersonSalary":27000
}]});
WriteResult({ "nInserted" : 1 })
> db.objectArray.insert({"Persons":[
{"PersonName":"David","PersonSalary":32000},{"PersonName":"Carol","PersonSalary":77000
}]});
WriteResult({ "nInserted" : 1 }) これで、find()を使用してすべてのドキュメントを表示できます。クエリは次のとおりです。
> db.objectArray.find().pretty();
出力は次のとおりです。
{
"_id" : ObjectId("5c6bfadc68174aae23f5ef53"),
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
},
{
"PersonName" : "Larry",
"PersonSalary" : 27000
}
]
}
{
"_id" : ObjectId("5c6bfb0968174aae23f5ef54"),
"Persons" : [
{
"PersonName" : "David",
"PersonSalary" : 32000
},
{
"PersonName" : "Carol",
"PersonSalary" : 77000
}
]
} これは、MongoDBのオブジェクト配列内のクエリされた要素のみを取得するためのクエリです。ここで_id:0 idプロパティを除外するために追加されます(_idプロパティは表示されません):
> db.objectArray.find({"Persons.PersonSalary":25000}, {
_id:0,Persons:{$elemMatch:{"PersonSalary":25000}}}).pretty(); 出力は次のとおりです。
{
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
}
]
} 上記のタスクを実行する別の方法は、射影演算子$を使用することです。クエリは次のとおりです。
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0,'Persons.$':1}).pretty(); 出力は次のとおりです。
{
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
}
]
} -
MongoDBコレクションの最大要素を取得しますか?
コレクションから最大の要素を取得するには、制限付きの降順で並べ替えます。ドキュメントを使用してコレクションを作成しましょう- > > db.demo669.insertOne({"Marks":76}); { "acknowledged" : true, "insertedId" : ObjectId("5ea3133c04263e90dac943d9") } > db.demo669.insertOne({"Marks":5
-
配列の1つの要素のみをスライスするMongoDBクエリ
配列の1つの要素のみをスライスするには、MongoDBで$sliceを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo579.insertOne( ... { ... "_id" : 101, ... "details" : { "FirstName" : "John" }, ... "Marks" :