Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按数组中对象的两个值筛选mongoengine/mongodb查询中的项_Python_Mongodb_Mongodb Query_Mongoengine - Fatal编程技术网

Python 按数组中对象的两个值筛选mongoengine/mongodb查询中的项

Python 按数组中对象的两个值筛选mongoengine/mongodb查询中的项,python,mongodb,mongodb-query,mongoengine,Python,Mongodb,Mongodb Query,Mongoengine,我想过滤一个JSON对象(在集合中,称为chat),它包含一个对象数组。该对象包含两个值,leaved和user。我想过滤这两个值,所以我只获取两个值都匹配的集合实体 示例chat条目: { "_id" : ObjectId("5de8529e104e1be853907372"), "created_at" : ISODate("2019-12-05T00:42:35.000Z"), "closed" : false, "type" : "group",

我想过滤一个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\uu user=id,members\uu leaved=False)

如果有人知道如何在MongoDBjs中实现这一点,那太好了,我可以自己将其应用到
mongoengine
:)这就是为什么我将两者都标记为似乎我已经找到了答案,感谢我自己得到了一些睡眠(

id=ObjectId(“5dceca90ab5d5c16a7401df0”)
db.getCollection('chat').find({
“$or”:[
{
“成员”:{
“$elemMatch”:{
“叶子”:假,
“用户”:id
} 
}
},
{
“创建者”:id,
“关闭”:错误
}
] 
})
我将对它进行更多的测试,并为
mongoengine
版本编辑这篇文章。之后,如果没有人比我更快,我会将它标记为已解决:)

编辑:

太快了…:

chats=Chat.objects.filter(
Q(members_umatch={“leaved”:False,“user”:id})|Q(creator=id,closed=False)
)

您可以为ObjectID和ISODate添加导入吗?@SuppressionsLayer您是什么意思?这是mongodb json,不是python。我从收藏中复制的。我认为模式及其创建方式是不必要的。我希望类似于
(members\uu user=id和members\uu leaved=False)
@pressurationslayer更新了我的问题,希望现在我需要的更清楚。