すべてのMongoDBドキュメントの配列で最新のエントリを見つける方法は?
すべてのドキュメントの配列で最新のエントリを検索するには、aggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo179.insertOne( ...{ ... "Name":"Chris", ... "Details": [ ... { ... "Id":101, ... "Subject":"MongoDB" ... }, ... { ... "Id":102, ... "Subject":"MySQL" ... } ... ] ...} ...); { "acknowledged" : true, "insertedId" : ObjectId("5e3980299e4f06af551997f9") } > db.demo179.insertOne( ...{ ... "Name":"David", ... "Details": [ ... { ... "Id":103, ... "Subject":"Java" ... }, ... { ... "Id":104, ... "Subject":"C" ... } ... ] ...} ...); { "acknowledged" : true, "insertedId" : ObjectId("5e39802a9e4f06af551997fa") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo179.find().pretty();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e3980299e4f06af551997f9"), "Name" : "Chris", "Details" : [ { "Id" : 101, "Subject" : "MongoDB" }, { "Id" : 102, "Subject" : "MySQL" } ] } { "_id" : ObjectId("5e39802a9e4f06af551997fa"), "Name" : "David", "Details" : [ { "Id" : 103, "Subject" : "Java" }, { "Id" : 104, "Subject" : "C" } ] }
以下は、すべてのドキュメントの配列内の最新のエントリを検索するためのクエリです-
> db.demo179.aggregate([ ... { "$unwind": "$Details" }, ... { "$sort": { "Details.Id": -1 } }, ... { "$limit": 2 }, ... { ... "$group": { ... "_id": "$Details.Id", ... "Name" : { "$first": "$Name" }, ... "Details": { "$push": "$Details" } ... } ... }, ... { ... "$project": { ... "_id": 0, "Name": 1, "Details": 1 ... } ... } ...])
これにより、次の出力が生成されます-
{ "Name" : "David", "Details" : [ { "Id" : 103, "Subject" : "Java" } ] } { "Name" : "David", "Details" : [ { "Id" : 104, "Subject" : "C" } ] }
-
MongoDBの配列に基づいてドキュメントをフィルタリングする方法は?
配列に基づいてドキュメントをフィルタリングするには、$elemMatchを使用します。 $ elemMatch演算子は、配列フィールドを含むドキュメントと一致します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo453.insertOne( ... { _id: 101, details: [ { Name: "David", Marks: 60 }, { Name: "Mike", Marks: 55} ] } ... ) { "acknowledged" : true, "inserte
-
配列内で一致したオブジェクトの数に基づいてMongoDBでドキュメントを見つけるにはどうすればよいですか?
例を見て、ドキュメントを使用してコレクションを作成しましょう- > db.demo694.insertOne( ... { ... "details" : ... [ ... { ... "Name" : "Chris", ...