'Trying to do a "join" on a ListField(ReferenceField(...))
I have documents like this
class Users(Document):
name = StringField(required=True)
email = EmailField(required=True, primary_key=True)
preferences = ListField(ReferenceField(Preferences, required=True))
languages = ListField(ReferenceField(Languages), required=True)
class Languages(Document):
name = StringField(required=True,unique=True)
active = BooleanField(default=True)
class Preferences(Document):
name = DictField(required=True,unique=True)
active = BooleanField(default=True)
I am trying to retrieve information from these 3 collections . return code from my 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})
but getting below error :
File "D:\user.py", line 51, in get return jsonify({'result': output}) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init_.py", line 355, in jsonify f"{dumps(data, indent=indent, separators=separators)}\n", File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init_.py", line 133, in dumps rv = json.dumps(obj, **kwargs) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json_init.py", line 238, in dumps **kw).encode(obj) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py", line 201, in encode chunks = list(chunks) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py", line 431, in _iterencode yield from _iterencode_dict(o, _current_indent_level) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py", line 405, in _iterencode_dict yield from chunks File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py", line 438, in _iterencode o = default(o) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask_mongoengine\json.py", line 19, in default return superclass.default(self, obj) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\json_init.py", line 57, in default return super().default(o) File "C:\Users\Ideapad\AppData\Local\Programs\Python\Python310\Lib\json\encoder.py", line 179, in default raise TypeError(f'Object of type {o.class.name} ' TypeError: Object of type CommandCursor is not JSON serializable
Solution 1:[1]
its working fine with the json.dumps
dumps(output, ensure_ascii=False)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | praful |
