8

假设我保存和检索相同的对象如下

var obj1, obj2;

instance.save(function(err, saved) {
    obj1 = saved;
});

Model.find(obj1._id).run(function(err, retrieved) {
    obj2 = retrieved;
});

当我打印到控制台时,ObjectIds 是相同的。如果我在两个 ObjectId 上调用 toString,它们是相等的。然而做一个直

obj1._id == obj2._id

返回假。这里发生了什么?

4

1 回答 1

19

ObjectId 是对象,因此标准 == 相等测试是比较引用的相等性,而不是包含的 id 值。比较它们的值的正确方法是使用 ObjectId.equals 作为:

obj1.equals(obj2)
于 2012-05-17T00:15:32.097 回答