首页 > 解决方案 > 过滤两个 MongoDB 数组不起作用(ES6)

问题描述

我要求 MongoDB 提供两个数组objectIDs,然后尝试比较这两个数组以找出差异。

我还使用res.locals.

这是代码:

let questions = res.locals.questions;
let answers = res.locals.answers;
let outstanding = questions.filter(oid => !answers.includes(oid));

console.log("The outstanding oids: "+outstanding)

结果总是blank

也许与 MongoDB 的格式或 res.locals 格式有关?感谢任何建议。

这是两个数组的样子:

questions: ["5f522bc55dd8993e58283526","5f522ab45dd8993e58283521","5f522ba65dd8993e58283525","5f522a5e5dd8993e5828351f","5f47a9a0b1764c3e285d4666"]

answers: ["5f522ab45dd8993e58283521","5f522bc55dd8993e58283526"]

标签: javascriptarraysmongodbexpress

解决方案


我猜您在数组中的值是 ObjectID 而不是字符串,因此您不能只将它们与 like==运算符进行比较。

值得庆幸的是,猫鼬提供.equals()了比较对象 ID。

let outstanding = questions.filter(oid => !answers.some(answer => oid.equals(answer)));

http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html#equals


推荐阅读