MongoDBで最も長い期間のオブジェクトをクエリする方法は?
ドキュメントを使用してコレクションを作成しましょう-
> db.demo344.insertOne({"startDate":"2020-02-24 10:50:00", "endDate":"2020-02-24 11:50:00"}); { "acknowledged" : true, "insertedId" : ObjectId("5e53f52cf8647eb59e5620aa") } > db.demo344.insertOne({"startDate":"2020-02-24 08:00:00", "endDate":"2020-02-24 11:50:50"}); { "acknowledged" : true, "insertedId" : ObjectId("5e53f53df8647eb59e5620ab") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo344.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e53f52cf8647eb59e5620aa"), "startDate" : "2020-02-24 10:50:00", "endDate" : "2020-02-24 11:50:00" } { "_id" : ObjectId("5e53f53df8647eb59e5620ab"), "startDate" : "2020-02-24 08:00:00", "endDate" : "2020-02-24 11:50:50" }
以下は、最も長い期間のオブジェクトをクエリする方法です-
> db.demo344.aggregate([ ... { $addFields: { ... longestTime: { $subtract: [ { $toDate: "$endDate" }, { $toDate: "$startDate" } ] } ... } }, ... { $sort: { longestTime: -1 } }, ... { $limit: 1 } ... ])
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e53f53df8647eb59e5620ab"), "startDate" : "2020-02-24 08:00:00", "endDate" : "2020-02-24 11:50:50", "longestTime" : NumberLong(13850000) }
-
MongoDBを使用して特定の日付形式でクエリをフィルタリングするにはどうすればよいですか?
特定の日付形式でクエリをフィルタリングするには、$dateToStringを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo433.insertOne({"DueDate":new Date("2019-11-23")}); { "acknowledged" : true, "insertedId" : ObjectId("5e771278bbc41e36cc3cae91") } > db.dem
-
MongoDBで1つのクエリで多くのドキュメントを更新するにはどうすればよいですか?
1つのクエリで多くのドキュメントを更新するには、MongoDBでbulkWrite()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo760.insertOne({id:1,details:{Value1:100,Value2:50}}); { "acknowledged" : true, "insertedId" : ObjectId("5eb0309f5637cd592b2a4aee") } > db.demo760.insert