gpt4 book ai didi

node.js - MongoDB 获取至少有一个非空数组的文档

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:28 25 4
gpt4 key购买 nike

我的架构:

    db.Interactives = mongoose.model(
'Interactives',
new Schema({
url: String,
forms: Array,
inputs: Array,
textareas: Array,
})
);

我想找到至少一个数组不为空的所有文档,所以我尝试了:

    await db.Interactives.find({
$elemMatch: {
forms: { $ne: [] },
inputs: { $ne: [] },
textarea: { $ne: [] },
},
})
.select('-_id -__v')
.exec()

我怎样才能实现这个目标?

最佳答案

您的代码的问题是它正在尝试确保没有数组为空。另一个问题是 $elemMatch 在数组元素中搜索值。您不想这样做,您想将数组与空白数组进行比较。您需要做的唯一更改是将 $elemMatch 替换为 $or 并添加括号,如下所示

    await db.Interactives.find({
$or: [
{forms: { $ne: [] }},
{inputs: { $ne: [] }},
{textarea: { $ne: [] }},
]
})
.select('-_id -__v')
.exec()

关于node.js - MongoDB 获取至少有一个非空数组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57294420/

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