mongodb - 在 mongodb 和 pymongo 中测试空字符串

这是我的数据结构。

[{
"name": "David",
"lastname": "",
},
{
"name": "Angela"
}]

“姓氏”有时存在,有时不存在,有时为“”。

我想获取所有姓氏不等于“”的行。但这不起作用。当 lastname 为 ""和 lastname 根本不存在时,它会返回两行。在上面的示例中,我只想获取 David 节点。

db.collection.find( {"lastname": {"$ne": ""}} )

最佳答案

db.collection.find({"lastname" : {"$exists" : true, "$ne" : ""}})

在 mongo shell 中(省略 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 }

如果您还想过滤掉与 null 值的匹配项,您需要按如下方式调整条件(我们也可以将 $exists 删除为 "$ne":null 负责这一点)

> db.collection.find({$and:[{"lastname": {"$ne": null}}, {"lastname": {"$ne": ""}}]})
  { "name" : "Kyle", "lastname" : "Test" }

https://stackoverflow.com/questions/9694223/

相关文章:

mongodb - 使用 MongoEngine 排序?

c# - 如何将 BsonDocument 对象反序列化回类

javascript - Meteor.js 部署到 "example.com"还是 "www.ex

java - 为 MongoDB Java 驱动程序配置日志记录

node.js - 按日期时间字段获取最新的 MongoDB 记录

node.js - 使用 Mongoose (MongoDB) 查询嵌套文档

mongodb - 如何在 Mongoose Schema 中表示 MongoDB GeoJSON

python - 使用 PyMongo 将 Pandas 数据框插入 mongodb

mongodb - 错误 : No unix socket support on windows c

mongodb - 使用 pyMongo 创建 ISODate