【问题标题】:Trying to do a "join" on a ListField(ReferenceField(...))尝试在 ListField(ReferenceField(...)) 上进行“加入”
【发布时间】:2022-02-16 19:23:39
【问题描述】:

我有这样的文件

类用户(文档):

name = StringField(required=True)
email = EmailField(required=True, primary_key=True)
preferences = ListField(ReferenceField(Preferences, required=True))
languages = ListField(ReferenceField(Languages), required=True)

类语言(文档):

name = StringField(required=True,unique=True)
active = BooleanField(default=True)

类首选项(文档):

name = DictField(required=True,unique=True)
active = BooleanField(default=True)

我正在尝试从这 3 个集合中检索信息。 从我的 python 返回代码

output = Users.objects.aggregate([
                {
                    '$lookup':
                        {
                            "from": "languages",
                            "localField": "languages",
                            "foreignField": "_id",
                            "as": "languages"
                        }
                },
                {
                    '$lookup':
                        {
                            "from": "preferences",
                            "localField": "preferences",
                            "foreignField": "_id",
                            "as": "preferences"
                        }
                }
            ])
            return jsonify({'result': output})

但出现以下错误:

文件“D:\user.py”,第 51 行,在 get 返回 jsonify({'结果': 输出}) jsonify 中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init_.py”,第 355 行 f“{转储(数据,缩进=缩进,分隔符=分隔符)}\n”, 转储中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init_.py”,第 133 行 rv = json.dumps(obj, **kwargs) 转储中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json_init.py”,第 238 行 **kw).encode(obj) 文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py”,第 201 行,编码 块 = 列表(块) _iterencode 中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py”,第 431 行 _iterencode_dict(o, _current_indent_level) 的产量 _iterencode_dict 中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py”,第 405 行 从块中产出 _iterencode 中的文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py”,第 438 行 o = 默认值(o) 文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask_mongoengine\json.py”,第 19 行,默认 返回 superclass.default(self, obj) 文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init.py”,第 57 行,默认 返回 super().default(o) 文件“C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py”,第 179 行,默认 raise TypeError(f'Object of type {o.class.name} ' TypeError:CommandCursor 类型的对象不是 JSON 可序列化的

【问题讨论】:

    标签: python-3.x mongodb mongoengine flask-restful


    【解决方案1】:

    它在 json.dumps 中运行良好

    转储(输出,ensure_ascii=False)

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2018-01-31
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多