javascript - 为什么 $ne: null 返回空数组?
问题描述
我正在尝试返回具有内容但 $ne: null 或 $exsists: true 仍然返回空数组的数组。
const userSchema = new mongoose.Schema({
email: String,
password: String,
googleId: String,
facebookId: String,
secret: Array
});
app.get("/secrets", function(req, res) {
User.find({secret: {$ne: null} }, function(err, secrets) {
if (err) {
console.log(err);
} else {
if (secrets) {
console.log(secrets);
res.render("secrets", {
secrets: secrets
});
};
};
});
});
我用谷歌搜索了很多,我知道 $ne: null 会返回每个不存在秘密数组的文档,但如果它是一个空数组,那为什么?任何建议如何克服这个菜鸟问题?我是新来的,请客气!:)
解决方案
这是因为null != []
. 您必须明确地写出您的条件来处理这两种情况。
$nin表示不在。因此,查找秘密值不在给定数组中的用户。给定的数组可以保存您的多个值。
User.find({secret: {$nin: [null, [] ] } },...
此外,$exists
您甚至可以获得该字段所在的文档null
。您将无法获得的唯一文档是完全不存在秘密字段的文档。
推荐阅读
- typescript - react-native run-android 出现错误:评估项目':app'时出现问题。([androidx.appcompat:appcompat:1.1.0-rc01])
- c++ - 为什么在我的代码中调用复制构造函数而不是移动构造函数?
- windows - 每月在 Windows 上安排 Docker RUN 命令
- android - 用于预安装的 Google 文字转语音 (GoogleTTS) 语言包
- javascript - checkvalidity 始终为必填字段返回 true
- c - 在哪里可以找到有关此 .s 文件中代码的文档?
- c - 如何在 C 中的 struct array hashmap 中正确地 malloc 项目
- docker - ansible运行时docker注册表找不到文件
- python - 带有 dynamicsymbol 的 Lambidfy 给出了无效的语法
- c++ - 仅使用递归来提取c ++中向量中的最大元素