db.collection.find({"lastname" : {"$exists" : true, "$ne" : ""}})
在蒙戈外壳(ID的省略以节省空间)
> db.collection.find()
{ "name" : "Angela" }
{ "name" : "David", "lastname" : "" }
{ "name" : "Kyle", "lastname" : "Test" }
{ "name" : "John", "lastname" : null }
> db.collection.find({"lastname" : {"$exists" : true, "$ne" : ""}})
{ "name" : "Kyle", "lastname" : "Test" }
{ "name" : "John", "lastname" : null }
如果你也想筛选出对你的需要调整标准如下空值相匹配(我们也可以摆脱$存在为“$ NE”:空照顾这个)
> db.collection.find({$and:[{"lastname": {"$ne": null}}, {"lastname": {"$ne": ""}}]})
{ "name" : "Kyle", "lastname" : "Test" }
python需要$ ne左右的引号。所以当level2_c为“”时以及当level2_c节点不存在时,表达式{$ ne:“”}的计算结果为true。所以我必须像这样过滤它们{“level2_c”:{“$ exists”:True},“level1_b.level2_c”:{“$ ne”:“”}}。这有效,但看起来有些丑陋。 – 2012-03-14 01:27:59
我正在从mongo shell进行测试。很高兴你找到了正确的答案。 – Kyle 2012-03-14 01:30:10
谢谢。我澄清了一下这个问题。你能再请看看吗?有没有比这更好的答案:{“lastname”:{“$ exists”:True},“lastname”:{“$ ne”:“”}}? – 2012-03-14 01:42:11