假设我按如下方式保存和检索相同的对象
var obj1, obj2;
instance.save(function(err, saved) {
obj1 = saved;
});
Model.find(obj1._id).run(function(err, retrieved) {
obj2 = retrieved;
});
当我打印到控制台时,ObjectIds是相同的。如果我在两个ObjectIds上调用toString它们是相等的。然而,直接做
obj1._id == obj2._id
返回false。这里发生了什么?
答案 0 :(得分:19)
ObjectIds是对象,因此标准==相等测试比较引用是否相等,而不是包含的id值。比较它们的值的正确方法是使用ObjectId.equals:
obj1.equals(obj2)