时间:2011-02-20 09:25:14

标签: python mongodb

我是MOngoDB的新手(来自CouchDB),我在使用MonDB python驱动程序在MongDB中为我的文档添加新属性时遇到了问题。

例如,我有以下文件:

{
'_id':123456,
'text':"this is nice"
}

我想插入一个新属性,例如:

{
'_id':123456,
'text':"this is nice",
'created_time':datetime.datetime.now()
}

如何将created_time属性添加到我的文档中?

谢谢!

5 个答案:

答案 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)

您可以使用$ set更新文档。

http://www.mongodb.org/display/DOCS/Updating

或者您可以获取文档,编辑它(使用python代码)并将其保存回来。

答案 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
}

将添加两个属性updatedAtcreatedAt 和mongodb会自动为它们维护(创建和更新时间)。