我想执行以下查询:
db.mycollection.find(HAS IMAGE URL)
正确的语法应该是什么?
我想执行以下查询:
db.mycollection.find(HAS IMAGE URL)
正确的语法应该是什么?
当前回答
db.collection_name.find({"filed_name":{$exists:true}});
获取包含此filed_name的文档,即使它是空的。
警告
db.collection_name.find({"filed_name":{$ne:null}});
获取文档,它的field_name有一个值$ne到null,但这个值也可以是空字符串。
我的建议:
db.collection_name.find({ "field_name":{$ne:null},$where:"this.field_name.length >0"})
其他回答
这将返回所有带有“IMAGE URL”键的文档,但它们仍然可能有一个空值。
db.mycollection.find({"IMAGE URL":{$exists:true}});
这将返回所有具有“IMAGE URL”键和非空值的文档。
db.mycollection.find({"IMAGE URL":{$ne:null}});
此外,根据文档,$exists目前不能使用索引,但$ne可以。
编辑:由于对这个答案感兴趣,添加了一些例子
给定这些插入:
db.test.insert({"num":1, "check":"check value"});
db.test.insert({"num":2, "check":null});
db.test.insert({"num":3});
这将返回所有三个文档:
db.test.find();
这将只返回第一个和第二个文档:
db.test.find({"check":{$exists:true}});
这将只返回第一个文档:
db.test.find({"check":{$ne:null}});
这将只返回第二个和第三个文档:
db.test.find({"check":null})
在理想情况下,您希望测试所有三个值,null、""或空(记录中不存在字段)
您可以执行以下操作。
db.users.find({$and: [{"name" : {$nin: ["", null]}}, {"name" : {$exists: true}}]})
感谢提供解决方案,我注意到在MQL中,有时$ne:null不起作用,而是我们需要使用语法$ne:"",即在上述示例的上下文中,我们需要使用db.mycollection。find({"IMAGE URL":{"$ne":""}}) -不知道为什么会发生这种情况,我已经在MongoDB论坛上发布了这个问题。
下图为示例快照:
查询将是
db.mycollection.find({"IMAGE URL":{"$exists":"true"}})
它将返回所有具有“IMAGE URL”作为密钥的文档...........
db.collection_name.find({"filed_name":{$exists:true}});
获取包含此filed_name的文档,即使它是空的。
警告
db.collection_name.find({"filed_name":{$ne:null}});
获取文档,它的field_name有一个值$ne到null,但这个值也可以是空字符串。
我的建议:
db.collection_name.find({ "field_name":{$ne:null},$where:"this.field_name.length >0"})