MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

タイムスタンプが存在しない場合にのみタイムスタンプを追加するMongoDBクエリ


これには、MongoDBでupsertとmultiを使用します-

アップサート − trueに設定すると、クエリ条件に一致するドキュメントがない場合に新しいドキュメントが作成されます。デフォルト値はfalseで、一致するものが見つからない場合は新しいドキュメントを挿入しません。

マルチ − fをtrueに設定すると、クエリ条件を満たす複数のドキュメントが更新されます。 falseに設定すると、1つのドキュメントが更新されます。デフォルト値はfalseです。

ドキュメントを使用してコレクションを作成しましょう-

> db.demo479.insertOne({"DueDate":new ISODate("2020-01-10"),"Name":"Chris"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e820733b0f3fa88e2279094")
}
> db.demo479.insertOne({"Name":"David"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e820748b0f3fa88e2279095")
}
> db.demo479.insertOne({"DueDate":new ISODate("2019-12-31"),"Name":"Bob"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e82075fb0f3fa88e2279096")
}
> db.demo479.insertOne({"Name":"Carol"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e820767b0f3fa88e2279097")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo479.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e820733b0f3fa88e2279094"), "DueDate" : ISODate("2020-01-
10T00:00:00Z"), "Name" : "Chris" }
{ "_id" : ObjectId("5e820748b0f3fa88e2279095"), "Name" : "David" }
{ "_id" : ObjectId("5e82075fb0f3fa88e2279096"), "DueDate" : ISODate("2019-12-
31T00:00:00Z"), "Name" : "Bob" }
{ "_id" : ObjectId("5e820767b0f3fa88e2279097"), "Name" : "Carol" }

以下は、タイムスタンプフィールドが存在しない場合にのみタイムスタンプフィールドを追加するためのクエリです-

> db.demo479.update({DueDate:{$exists:false}}, {$set : {"DueDate":new Date}}, {upsert:false,
multi:true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo479.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e820733b0f3fa88e2279094"), "DueDate" : ISODate("2020-01-
10T00:00:00Z"), "Name" : "Chris" }
{ "_id" : ObjectId("5e820748b0f3fa88e2279095"), "Name" : "David", "DueDate" :
ISODate("2020-03-30T14:52:29.656Z") }
{ "_id" : ObjectId("5e82075fb0f3fa88e2279096"), "DueDate" : ISODate("2019-12-
31T00:00:00Z"), "Name" : "Bob" }
{ "_id" : ObjectId("5e820767b0f3fa88e2279097"), "Name" : "Carol", "DueDate" :
ISODate("2020-03-30T14:52:29.656Z") }

  1. ドキュメント内の特定のフィールドの値を合計するためのMongoDBクエリ

    ドキュメントを使用してコレクションを作成しましょう- > db.demo677.insertOne({Value:10}); {    "acknowledged" : true,    "insertedId" : ObjectId("5ea421f404263e90dac943f8") } > db.demo677.insertOne({Value:50}); {    "acknowledged" : true,    

  2. 配列の1つの要素のみをスライスするMongoDBクエリ

    配列の1つの要素のみをスライスするには、MongoDBで$sliceを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo579.insertOne( ...    { ...       "_id" : 101, ...       "details" : { "FirstName" : "John" }, ...       "Marks" :