如何检查 MongoDB 中的对象中是否存在嵌套键?
How to check an existence of the nested key in an object in MongoDB?
所以问题是我必须使用 "aggregate" 函数和 "group" MongoDB 中的运算符。酒店必须至少有 4.5 颗星,并且属性 "Wi-Fi" 的值为 true。我在 link 下方附加到具有对象结构的图像(来自 Robo3T 的屏幕)
"attributes" 是业务集合的一个键,它可以有像 "Wi-Fi" 这样的嵌套键,但是没有必要。我不知道如何检查此键的存在以及真实值。我写了一些代码但没有检查它(见下文)。
db.business.aggregate([
{$match: {"categories": {$in: ["Hotels"]}, "stars":{$gte: 3.5}}},
{$group: {_id:"$state", count:{$sum:1}}}])
我需要有关此示例的帮助和大量解释。
你不需要检查某个字段是否存在只要你需要检查这个字段是否为真
所以,只需将 'attributes.Wi-Fi': true
添加到匹配对象
所以查询应该是
'attributes.Wi-Fi': true
如果您需要检查某些属性如 Wi-Fi 不存在或等于 false
那么查询应该像
1-
'attributes.Wi-Fi': { $ne: true } // wi-fi attribute is not equal to true, this means either wi-fi does not exist or exists but equals any value but not true
2- 或使用 $or 运算符
$or: [
{
'attributes.Wi-Fi': { $exists: false } // wifi attribute does not exist
},
{
'attributes.Wi-Fi': false // or exists and equal to false
}
]
如果需要,只需将这些查询中的任何一个添加到 $match 对象中
所以问题是我必须使用 "aggregate" 函数和 "group" MongoDB 中的运算符。酒店必须至少有 4.5 颗星,并且属性 "Wi-Fi" 的值为 true。我在 link 下方附加到具有对象结构的图像(来自 Robo3T 的屏幕)
"attributes" 是业务集合的一个键,它可以有像 "Wi-Fi" 这样的嵌套键,但是没有必要。我不知道如何检查此键的存在以及真实值。我写了一些代码但没有检查它(见下文)。
db.business.aggregate([
{$match: {"categories": {$in: ["Hotels"]}, "stars":{$gte: 3.5}}},
{$group: {_id:"$state", count:{$sum:1}}}])
我需要有关此示例的帮助和大量解释。
你不需要检查某个字段是否存在只要你需要检查这个字段是否为真
所以,只需将 'attributes.Wi-Fi': true
添加到匹配对象
所以查询应该是
'attributes.Wi-Fi': true
如果您需要检查某些属性如 Wi-Fi 不存在或等于 false 那么查询应该像
1-
'attributes.Wi-Fi': { $ne: true } // wi-fi attribute is not equal to true, this means either wi-fi does not exist or exists but equals any value but not true
2- 或使用 $or 运算符
$or: [
{
'attributes.Wi-Fi': { $exists: false } // wifi attribute does not exist
},
{
'attributes.Wi-Fi': false // or exists and equal to false
}
]
如果需要,只需将这些查询中的任何一个添加到 $match 对象中