gpt4 book ai didi

mongodb - 在MongoDB中如何查找属性是对象而不是数组的文档

转载 作者:行者123 更新时间:2023-12-03 19:58:12 24 4
gpt4 key购买 nike

我有收藏users其中每个都包含属性 gyms例如。:

{
"_id" : ObjectId("aaaaa"),
"firstName" : "first",
"lastName" : "second",
"email" : "aaa@aaaa",
"password" : "aaaaa",
"gyms" : [
{
"name" : "aaaaaa",
"address" : "aaaaaaaaaaaaa"
}
]
}

但是,当我运行时 db.users.aggregate(..)我得到:
exception: Value at end of $unwind field path '$gyms' must be an Array, but is a Object

似乎一些用户文档包含健身房:{} 或根本没有健身房而不是数组。我需要找到这些文件,我该怎么做?

编辑:

我运行的聚合命令:
db.users.aggregate({ $unwind: "$gyms" }, { $match: { "gyms.address": { $exists: true } } } )

最佳答案

使用 {$type: "object"}也为您提供包含带有数组的文档的结果。因此,要检查纯对象,只需添加额外的检查以确保丢弃数组,即 obj.0.key: {$exists: false} .

在你的情况下,

db.users.find({"gyms": {$type: "object"}, "gyms.0.name": {$exists: false}}).map(function(u) {
// modify u.gyms to your satisfaction
db.conversations.save(c);
})

关于mongodb - 在MongoDB中如何查找属性是对象而不是数组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29747782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com