这是我的数据 struct .

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

"lastname"有时出现,有时不出现,有时是"".

我想得到lastname不等于""的所有行.但这是行不通的.当lastname为""时和lastname根本不存在时,它都返回这两行.在上面的例子中,我只想得到David node .

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

推荐答案

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

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

如果您还想根据空值筛选匹配项,则需要如下调整条件(我们也可以将$existsgo 掉为"$ne":null会处理这个问题)

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

Mongodb相关问答推荐

在Mongoose中对嵌套文档设置时间戳,但不对父文档设置时间戳

数组中字符串的Mongo查询集合和推送到新数组嵌套对象

如何使用聚合管道查找未销售但存在于产品详细信息集合中的产品的ID

带dropTarget的MongoDB renameCollection命令是原子的吗

Mongoose 排除数组中包含特定嵌套对象的文档

MongoDB - 将数组元素转换为新字段

MongoDB查询优化

分组前的 MongoDb 聚合总数

mongo _id 字段重复键错误

MongoDB 的 Java 语法

MongoDB 中 cursor.count() 和 cursor.size() 之间的区别

通过 Spring Boot 应用程序访问 mongodb 时的身份验证错误

Spring Mongodb @DBREF

MongoDB:如何在 100 个集合中找到 10 个随机文档?

指定在 mongodb .js 脚本中使用哪个数据库

Mongodb错误:The positional operator did not find the match needed from the query

Mongodb - 如何在多个字段中查找字符串?

mongoose中的 Date.now() 和 Date.now 有什么区别?

使用 C# 聚合 $lookup

Mongodb Compass 无法在 Ubuntu 18.10 中打开