【发布时间】:2019-12-05 01:33:28
【问题描述】:
我想过滤一个包含对象数组的 JSON 对象(在集合中,称为 chat)。该对象包含两个值,leaved 和 user。我想过滤两者,所以我只得到两个值匹配的集合实体。
例如chat 条目:
{
"_id" : ObjectId("5de8529e104e1be853907372"),
"created_at" : ISODate("2019-12-05T00:42:35.000Z"),
"closed" : false,
"type" : "group",
"creator" : ObjectId("5da976ed390587ad999e0190"),
"messages" : [],
"members" : [
{
"leaved" : true,
"user" : ObjectId("5da9773c0e46aa734e4c3683")
},
{
"leaved" : false,
"user" : ObjectId("5dceca90ab5d5c16a7401df0")
}
]
}
当我现在尝试按 leaved 和 user 过滤时,就像在 mongoengine 中这样,我得到了上述值,但我应该没有。
id = "5da9773c0e46aa734e4c3683"
chats = Chat.objects.filter(members__user=id, members__leaved=False)
如果有人知道如何在 MongoDBjs 中做到这一点,那太好了,我可以自己将其改编为 mongoengine。 :) 这就是我标记两者的原因
【问题讨论】:
-
您可以为 ObjectID 和 ISODate 添加导入吗?
-
@oppressionslayer 你是什么意思?这是 mongodb json 而不是 python。我从收藏中复制了它。我认为架构及其创建方式是不必要的。我期待像
..(members__user=id and members__leaved=False) -
@oppressionslayer 稍微更新了我的问题,希望现在更清楚我需要什么。
标签: python mongodb mongodb-query mongoengine