我想知道为什么我的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(也许有些问题吗?)
答案 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
插入新文档。