Mongo ObjectID不相等

时间:2018-06-27 17:04:13

标签: javascript mongodb meteor

new Mongo.ObjectID('18986769bd5eaaa42cb565b1') == new Mongo.ObjectID('18986769bd5eaaa42cb565b1')

返回假

new Mongo.ObjectID('18986769bd5eaaa42cb565b1').toString() == new Mongo.ObjectID('18986769bd5eaaa42cb565b1').toString()

返回true

这是错误,功能还是仅需要使用valueOf()进行处理,并在需要使用数据库时将其从字符串转换回去?

3 个答案:

答案 0 :(得分:1)

这是完全正常的,因为即使两个对象包含相同的信息,它们也不相等。您需要遍历所有属性并分别进行比较。

console.log({} === {});

示例

const obj1 = {id: 12345}
const obj2 = {id: 12345}

console.log(obj1 === obj2);

let same = true;
for(const prop in obj1){
  if(obj2.hasOwnProperty(prop) && obj1[prop] !== obj2[prop]){
      same = false;
      break;
  }
}

console.log(same);

答案 1 :(得分:1)

您应该看看这个question,它可能会解决您的问题。基本上,他们说您需要使用您正在使用的

的mongo库提供的equals方法。

答案 2 :(得分:0)

这是因为MongoDB完全基于JSON,因此即使特定信息本身就是字符串,Mongo仍会将其作为JSON对象提供。因此,您需要将其解析回字符串形式,以便可以在其他地方使用它。