gpt4 book ai didi

dictionary - 使用 mongoengine 写一个空的 dict 字段

转载 作者:行者123 更新时间:2023-12-05 06:32:31 30 4
gpt4 key购买 nike

我观察到 document[field] 返回 {} 的 mongo 文档,但我似乎无法创建这样的文档。示例:

import mongoengine

mongoengine.connect('FOO', host='localhost', port=27017)

class Foo(mongoengine.Document):
some_dict = mongoengine.DictField()
message = mongoengine.StringField()

ID = '59b97ec7c5d65e0c4740b886'
foo = Foo()
foo.some_dict = {}
foo.id = ID
foo.save()

但是查询记录的时候,some_dict不在字段中,所以最后一行报错:

import pymongo
CON = pymongo.MongoClient('localhost',27017)
x = CON.FOO.foo.find_one()
assert str(x['_id']) == ID
assert 'some_dict' in x.keys()

最佳答案

一个明显的解决方法是在文档创建后对其进行更新,但这感觉太麻烦了。我更希望 mongoengine 能够轻松地直接执行:

import mongoengine
import pymongo
CON = pymongo.MongoClient('localhost',27017)
CON.Foo.foo.remove()

mongoengine.connect('FOO', host='localhost', port=27017)

class Foo(mongoengine.Document):
some_dict = mongoengine.DictField()
some_list = mongoengine.ListField()

ID = '59b97ec7c5d65e0c4740b886'
foo = Foo()
foo.id = ID
foo.save()

from bson.objectid import ObjectId
CON.FOO.foo.update_one({'_id': ObjectId(ID)},
{'$set': {'some_dict': {}}}, upsert=False)

x = CON.FOO.foo.find_one()
assert str(x['_id']) == ID
assert 'some_dict' in x.keys()

关于dictionary - 使用 mongoengine 写一个空的 dict 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51211880/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com