db.collection.find()返回忽略mongodb中没有值的键

db.collection.find()返回忽略mongodb中没有值的键,mongodb,Mongodb,我正在使用查询db.collection.find()执行查询,以显示mongodb中特定数据集合中的对象 在使用名为User的集合对数据库执行查询时,将输入没有值的键,因此对象的长度不同 例如: 当我这样做时:db.User.find() 对于前两个对象,我得到以下结果: { "_id" : ObjectId("5f6be9aba8fced67a9af8154"), "username" : "nesto

我正在使用查询db.collection.find()执行查询,以显示
mongodb
中特定数据集合中的对象

在使用名为
User
的集合对数据库执行查询时,将输入没有值的键,因此对象的长度不同

例如:

当我这样做时:
db.User.find()

对于前两个对象,我得到以下结果:

{ 
    "_id" : ObjectId("5f6be9aba8fced67a9af8154"), 
    "username" : "nestor", 
    "first_name" : "Nestor", 
    "email" : "nestor@example.com", 
}
{ 
    "_id" : ObjectId("5f6bee1767e194695a0a3516"), 
    "username" : "salma", 
    "first_name" : "Salma", 
    "last_name" : "Driss", 
    "email" : "salma@example.com", 
}
从上面的示例中,第一个对象中的键
last_name
被省略,因为它没有值,而第二个对象中的键却存在,因为它有值。我希望有
“姓氏”:如果
姓氏
值不存在,则为null

所以我希望得到这个:

{ 
    "_id" : ObjectId("5f6be9aba8fced67a9af8154"), 
    "username" : "nestor", 
    "first_name" : "Nestor", 
    "last_name" : null,
    "email" : "nestor@example.com", 
}
{ 
    "_id" : ObjectId("5f6bee1767e194695a0a3516"), 
    "username" : "salma", 
    "first_name" : "Salma", 
    "last_name" : "Driss", 
    "email" : "salma@example.com", 
}

什么查询可以帮助我解决这个问题?

查询{item:null}匹配包含值为null的item字段或不包含item字段的文档


您也可以按照上面的MongoDB文档链接自己进行测试。

查询{item:null}匹配包含值为null的item字段或不包含item字段的文档


您也可以按照上面的MongoDB文档链接自己进行测试。

您可以使用以下内容投影结果:

db.collection.aggregate([
   { $set: { last_name: { $ifNull: ["$last_name", null] } } }
])

您可以通过以下方式投影结果:

db.collection.aggregate([
   { $set: { last_name: { $ifNull: ["$last_name", null] } } }
])

您可以选择:1.添加字段,以显示空值;2.更新集合3。创建一个视图。问题是,如果你打开或关闭了一堆字段,我不知道能做什么。你传入的查询是什么,你使用的驱动程序是什么?@rags2richs,我没有传入任何查询。find(),主要目标是获取所有对象。我将结果用于不同的任务,并要求每个对象中都存在所有键。您可以选择:1.添加字段,以显示null;2.更新集合3。创建一个视图。问题是,如果你打开或关闭了一堆字段,我不知道能做什么。你传入的查询是什么,你使用的驱动程序是什么?@rags2richs,我没有传入任何查询。find(),主要目标是获取所有对象。我将结果用于不同的任务,并要求每个对象中都存在所有键。这是不正确的,如果运行
find()
您将获得所有键。据推测,用户没有空值:它没有键。不过我们会发现的。您不会将密钥设置为null。您需要传递对null键的查询,因为find不会输出它们。请参阅文档和测试。请考虑这是不正确的,如果运行<代码>查找()(<代码)>您将获得所有的密钥。据推测,用户没有空值:它没有键。不过我们会发现的。您不会将密钥设置为null。您需要传递对null键的查询,因为find不会输出它们。请看文档和测试。请考虑这就是我的意思,但是OP刚刚消失了。回答得很好这就是我的意思,但是这篇文章就不那么精彩了。回答得好