如何检查 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 对象中