我是MOngoDB的新手(来自CouchDB),我在使用MonDB python驱动程序在MongDB中为我的文档添加新属性时遇到了问题。
例如,我有以下文件:
{
'_id':123456,
'text':"this is nice"
}
我想插入一个新属性,例如:
{
'_id':123456,
'text':"this is nice",
'created_time':datetime.datetime.now()
}
如何将created_time属性添加到我的文档中?
谢谢!
答案 0 :(得分:52)
db.collection.update({'_id' : ObjectId(...)},
{'$set' : {'create_time' : datetime(..) }})
答案 1 :(得分:7)
要向MongoDB集合上的所有现有文档插入新属性,我们可以在我们的mongo shell上执行此方法:
db.collection.update(
{},
{'$set': {"new_attribute":"attribute_value"}},
false,
true
)
{}
这是查询条件,在我们的例子中,我们将新的属性添加到我们的所有记录中,我们传递一个空对象{}
{'$set': {"new_attribute":"attribute_value"}}
表示使用$set
运算符,在我们的记录中插入一个具有此值"new_attribute"
的新密钥"attribute_value"
false
它是upsert
参数,它告诉mongo在找不到匹配项时不插入新文档true
它是multi
参数,它告诉mongo更新符合查询条件的多个文档要查找更多详细信息,请检查: https://docs.mongodb.com/manual/reference/method/db.collection.update/
答案 2 :(得分:5)
答案 3 :(得分:2)
要添加到Taha's answer中,可以使用currentDate
插入日期时间属性:
db.getCollection("collection-name").update(
{},
{
$currentDate: {
"date-field-name": { $type: "date" } // you can also use "timestamp" here
}
},
false, true)
或设置可以使用的特定日期:
db.getCollection("collection-name").update(
{},
{
$set: {
"date-field-name": ISODate("2020-01-23T04:05:06.007Z")
}
},
false, true)
答案 4 :(得分:0)
如果您感兴趣的更新仅用于创建或更新的日期时间,则可以在创建模型时添加此属性
{
timestamps: true
}
将添加两个属性updatedAt
和createdAt
和mongodb会自动为它们维护(创建和更新时间)。