gpt4 book ai didi

node.js - 如何使用 Node.JS 中的 Mongoose 在 MongoDB 中查找其中包含空数组的文档?

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

在“QAns”模型中,我想在 node.js 中使用 mongoose 加载“Answers”字段为空数组的所有文档。我正在使用 MongoDB Atlas 来存储我的数据。这是我的数据库架构:

const QuestAnsSchema = new Schema({
text: String,
author: String,
answers: [{
text: String,
author: String
}]
});

这是MongoDB数据库中的数据。

{
"_id":{"$oid":"5ee1f235a1e9870daca7d5e9"},
"text":"Question 1",
"author":"5ee1b8ebdbf91b23a808d417",
"answers":[],
"__v":{"$numberInt":"0"}
},
{
"_id":{"$oid":"5ee1f235885770darrr7f449"},
"text":"Question 2",
"author":"5ee1b8ebdbf9o2w3a808d417",
"answers":[],
"__v":{"$numberInt":"0"}
}

两个文档中的“答案”字段都是空的,但假设有些文档的“答案”字段非空,我将如何加载没有答案字段的文档?

我试过这段代码,但它给出了“错误请求”错误:

router.get('/questions', (req, res) => {
QAns.find({answers: { $exists: true, $ne: [] } }).then(( err, result) => {
if(err) return res.sendStatus(400);

res.render('questions',{ result });

console.log(result);
});

})
  • QAns为模型名,answers为数组字段
  • 'questions' 是将在加载这些文档后显示的 ejs 文件。

最佳答案

您可以使用 $size运算符获取所有文档 answers数组的长度为零。

QAns.find({
answers: { $size: 0 }
})

$size运算符用于按元素数量查询数组。

编辑:

选择answers所在的所有文档数组不为空,使用$not运算符连同 $size运营商。

以下查询将选择所有文档 answers数组不为空

QAns.find({
answers: {
$not: { $size: 0 }
}
})

$not运算符对指定的 <operator-expression> 执行逻辑 NOT 运算并选择与 <operator-expression> 不匹配的文档

附言上面的查询还将返回那些文件 answers字段不存在

关于node.js - 如何使用 Node.JS 中的 Mongoose 在 MongoDB 中查找其中包含空数组的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62323458/

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