mongoengine保存方法已弃用?

时间:2017-03-19 16:35:01

标签: python mongodb pymongo mongoengine

我想知道为什么我的python说mongoengine save()方法已被弃用?我在官方文档https://mongoengine.readthedocs.io/en/v0.9.0/apireference.html

中看不到任何关于此的信息
class MyModel(Document):
    user_id = StringField(required=True)
    date = DateTimeField(required=True, default=datetime.datetime.now)

my = MyModel()
my.user_id = 'user'
my.save()

现在我明白了:

  

/Library/Python/2.7/site-packages/mongoengine/document.py:340:   弃用警告:不建议使用保存。使用insert_one或replace_one   代替

我有python 2.7并且还安装了pymongo,mongoengine和bottle-mongo(也许有些问题吗?)

2 个答案:

答案 0 :(得分:1)

MongoEngine包装了PyMongo,它在PyMongo 3.0中弃用了“save”:

http://api.mongodb.com/python/current/changelog.html#collection-changes

MongoEngine可能需要弃用其save方法,或者禁止弃用警告,或者可能需要一些其他修复来处理此PyMongo更改。我建议你搜索MongoEngine的bug追踪器并报告这个问题,如果它还没有。

MongoEngine Bug - https://github.com/MongoEngine/mongoengine/issues/1491

答案 1 :(得分:1)

改为使用col.replace_one({‘_id': doc['_id']}, doc, True)

api是replace_one(filter, replacement, upsert=False, bypass_document_validation=False, collation=None, session=None)

如果upsert = True一无所获,请使用filter插入新文档。