node.js - Mongoose $and 过滤器无法正确过滤
问题描述
Mongoose 中的$and
运算符在 NodeJS 中无法正常工作。假设我们有这个 JSON-MongoDB 数据:
{
"_id" : ObjectId("60bb4cd74a802722d8b0de0f"),
"username" : "System",
"text" : "matan has joined!",
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("60bb4cd74a802722d8b0de10"),
"username" : "System",
"text" : "Welcome!",
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("60bb4cdb4a802722d8b0de11"),
"username" : "matan",
"text" : "Hello World",
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("60bb4ce14a802722d8b0de12"),
"username" : "System",
"text" : "matan has left.",
"__v" : NumberInt(0)
}
我想过滤所有System's Welcome
消息都将被丢弃的数据。例如,将显示此输出:
{
"_id" : ObjectId("60bb4cd74a802722d8b0de0f"),
"username" : "System",
"text" : "matan has joined!",
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("60bb4cdb4a802722d8b0de11"),
"username" : "matan",
"text" : "Hello World",
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("60bb4ce14a802722d8b0de12"),
"username" : "System",
"text" : "matan has left.",
"__v" : NumberInt(0)
}
但相反,仅显示此输出:
{
_id: 60bb4cdb4a802722d8b0de11,
username: 'matan',
text: 'Hello World',
__v: 0
}
这是我的代码(NodeJS):
var msgs = Msg.find({
$and: [
{ username: {$ne: "System"} },
{ text: {$ne: "Welcome!"} }
]
}, (err, retn) => console.log(retn))
我错过了什么重要的事情吗?谢谢您的帮助。
解决方案
$and
条件将$ne
匹配两个字段不应等于值。
你可以试试$or
条件,
var msgs = Msg.find({
$or: [
{ username: { $ne: "System" } },
{ text: { $ne: " Welcome!" } }
]
}, (err, retn) => console.log(retn))
推荐阅读
- c# - C# Visual Studio 中缺少 Program.cs 文件
- angular - RxJS 和 ANGULAR:使用 RxJS 根据特定的“键”重构/重新排序 json 数据
- matlab - 如何在 matlab 中修复“未定义的函数或变量”?
- vba - 你如何 ReDim 多维数组中的第一个维度?
- mergesort - 有没有什么流程可以降低归并排序的空间复杂度?
- android - 查询 LiveData 对象列表
- javascript - 用逗号分隔 N 次的数字范围的正则表达式
- javascript - 如何在列表中附加字典?
- python - Why are my array values not getting updated? Linear regression
- batch-file - a ping command bat file is keep running