Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
MongoDB-检查文档中的字段是否存在值_Mongodb_Mongodb Query - Fatal编程技术网

MongoDB-检查文档中的字段是否存在值

MongoDB-检查文档中的字段是否存在值,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个集合,其中文档如下所示: /* 0 */ { "_id" : ObjectId("5320b1c723bc746084fa7107"), "channels" : [ 3, 4 ] } /* 1 */ { "_id" : ObjectId("5320b1c723bc746084fa7107"), "channels" : [ ] } 我想要形成一个查询,这样我想要通道有一些值并且不是空的所有文档 我试过

我有一个集合,其中文档如下所示:

/* 0 */

{
    "_id" : ObjectId("5320b1c723bc746084fa7107"),
    "channels" : [ 
        3, 
        4
    ]
}


/* 1 */

{
    "_id" : ObjectId("5320b1c723bc746084fa7107"),
    "channels" : [ ]
}
我想要形成一个查询,这样我想要通道有一些值并且不是空的所有文档

我试过这个:

db.event_copy.find({"channels":{$exists:true}})
但这仍然会返回通道中没有值的文档。

您需要操作员。要查找包含元素的内容,请执行以下操作

db.collection.find({channels:{$size:0})
如果你知道你有一个固定的尺寸,那么就这样做

db.collection.find({channels:{$size:2})
否则,用

db.collection.find({channels:{$not:{$size:0}})
您还可以结合:

db.collection.find({$and:[
{通道:{$not:{$size:0}}},
{通道:{$exists:true}}
]})

检查尺寸操作符

我是这样做的:

db.event_copy.find({'channels.0' : {$exists: true}}).count()

是的,我刚试过$size操作符。问题是我想要所有有价值的文件。我不知道里面可能有多少值。基本上我不知道尺寸。我试着使用$gte和$size,但它似乎没有work@PiHorse你不能做射程,但这是有条件的。请参阅编辑。由于某些原因,该查询没有给出正确的结果。它还返回本身没有“通道”字段的文档。@PiHorse您需要在提问时指定类似的内容。再次查看编辑。这样可以正常工作。但是看看我贴的答案。这似乎是一个更简单的解决方案。但不确定查询性能。是的,我刚刚尝试了$size运算符。问题是我想要所有有价值的文件。我不知道里面可能有多少值。基本上我不知道尺寸。我尝试将$gte与$size一起使用,但它似乎不起作用。它是否也检查字段是否有值,或者仅检查字段是否存在?
db.event_copy.find({'channels.0' : {$exists: true}}).count()
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['my_database']
col=db['my_collection']

### Input
email="test@gmail.com"
########
exist_count=col.find({"email": email},{'_id':0}).count()

if exist_count>=1:
    print("Field value is present")
else:
    print("Field value is not present")