MongoDB 查询只在不存在的时候添加时间戳
为此,请在 MongoDB 中使用 upsert 和 multi −
Upsert − 如果设为 true,当没有任何文档匹配查询条件时,创建一个新文档。默认值为 false,在找不到匹配项时不插入新文档。
Multi − 如果设为 true,更新满足查询条件的多条文档。如果设为 false,则更新一条文档。默认值为 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") }
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
安卓
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP