【发布时间】:2020-03-05 04:22:42
【问题描述】:
在使用switch_collection 方法后保存文档时,我有一个非常奇怪的行为。
可以使用以下代码进行复制:
import mongoengine as me
class ObjectA(me.Document):
name = me.StringField()
def test_strange_behaviour():
a_0 = ObjectA(name="a_0")
a_0.save()
a_1 = ObjectA(name="a_1")
a_1.save()
a_1.switch_collection("new_collection", keep_created=False)
a_1.id = a_0.id
a_1.save()
print(a_1._collection)
print(a_1._collection.find_one(a_1.id))
当调用test_strange_behaviour 函数时,代码会打印出类似这样的内容:
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary(), connecttimeoutms=30000, heartbeatfrequencyms=3000, ssl=False), 'engine'), 'new_collection')
{'_id': ObjectId('5dc57611dba04ca06410e477')}
如您所见,最后打印显示在new_collection 集合上创建的文档仅包含_id 字段,而不包含name 字段。如果keep_created 是True,也会发生同样的事情。
为什么会这样?这个例子有问题吗?
【问题讨论】:
标签: python mongodb pymongo mongoengine