我想执行以下查询:
db.mycollection.find(HAS IMAGE URL)
正确的语法应该是什么?
我想执行以下查询:
db.mycollection.find(HAS IMAGE URL)
正确的语法应该是什么?
当前回答
这将返回所有带有“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})
其他回答
db.<collectionName>.find({"IMAGE URL":{"$exists":"true"}, "IMAGE URL": {$ne: null}})
分享给未来的读者。
这个查询为我们工作(查询从MongoDB compass执行):
{
"fieldName": {
"$nin": [
"",
null
]
}
}
有一句话是最好的:
db.mycollection.find({ 'fieldname' : { $exists: true, $ne: null } });
在这里,
我的收藏:放置你想要的收藏名称
Fieldname:放置你想要的字段名
解释:
$exists:当为true时,$exists匹配包含该字段的文档,包括字段值为空的文档。如果为false,则查询只返回不包含该字段的文档。
$ne选择字段值不等于指定值的文档。这包括不包含该字段的文档。
所以在你提供的情况下,下面的查询将返回所有imageurl字段存在且非空值的文档:
db.mycollection.find({ 'imageurl' : { $exists: true, $ne: null } });
在pymongo中,你可以使用:
db.mycollection.find({"IMAGE URL":{"$ne":None}});
因为pymongo将mongo null表示为python None。
这将返回所有带有“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})