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

时间:2014-03-13 01:26:45

标签: mongodb mongodb-query

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

/* 0 */

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


/* 1 */

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

我想形成一个查询,以便我想要所有文件,其中渠道有一些价值而且不是空的。

我试过了:

db.event_copy.find({"channels":{$exists:true}})

但是仍然会在频道中返回没有值的文档。

4 个答案:

答案 0 :(得分:14)

您需要$size运算符。要查找包含元素的内容,请执行以下操作

db.collection.find({ channels: {$size: 0} })

如果您知道自己有固定的尺寸,那么就这样做

db.collection.find({ channels: {$size: 2} })

否则用$not

反转
db.collection.find({ channels: {$not:{$size: 0}} })

您可以与$and结合使用:

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

答案 1 :(得分:1)

查看尺寸运算符here

db.event_copy.find( { channels: { $size: 0 } } );

答案 2 :(得分:1)

我是用它做的:

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

答案 3 :(得分:0)

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")