繁体   English   中英

使用 MongoDB ( Python ) 向文档插入新属性

[英]Inserting new attribute to a document using MongoDB ( Python )

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

例如,我有以下文档:

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

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

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

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

谢谢!

db.collection.update({'_id' : ObjectId(...)}, 
                     {'$set' : {'create_time' : datetime(..) }})

要向 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/

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

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

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

要添加到Taha 的答案中,您可以使用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)

如果通过任何方式,您感兴趣的更新仅针对创建或更新的日期时间,您可以在创建模型时添加此属性

{
    timestamps: true
}

这将增加两个属性updatedAtcreatedAt和MongoDB会对其进行维护(创建,更新时间)为您自动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM