db.collection.find()返回忽略mongodb中没有值的键
我正在使用查询db.collection.find()执行查询,以显示db.collection.find()返回忽略mongodb中没有值的键,mongodb,Mongodb,我正在使用查询db.collection.find()执行查询,以显示mongodb中特定数据集合中的对象 在使用名为User的集合对数据库执行查询时,将输入没有值的键,因此对象的长度不同 例如: 当我这样做时:db.User.find() 对于前两个对象,我得到以下结果: { "_id" : ObjectId("5f6be9aba8fced67a9af8154"), "username" : "nesto
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刚刚消失了。回答得很好这就是我的意思,但是这篇文章就不那么精彩了。回答得好