我正在使用一个名为mongoskin的包装器来访问 mongoDB。mongoskin 是一个简单的 mongoDB javascript api 包装器。
但是当我写入 mongoDB 时,有时 _id 被转换为 ObjectID,有时不是。当我必须比较 _id 时,不同的行为会导致很多问题。例如:
公司集合中的以下文档,“创建者”不会转换为ObjectID,但“客户”中的项目会自动转换为ObjectID。
> db.company.find()
{ "_id" : ObjectId("53d4b452f5b25900005cb998"), "name" : "Default Company Co.", "clients" : [ ObjectId("53d4b452f5b25900005cb999"), ObjectId("53d4b452f5b25900005cb99a") ] }
{ "_id" : ObjectId("53d4b452f5b25900005cb999"), "name" : "client company for 777 - updated", "creator" : "53d4b452f5b25900005cb998", "ssn" : "12-123-1234" }
这是我用来为“创建者”分配 _id 的 nodejs 代码
clientCompany.creator = req.session.user.company_id;
这是我用来为“客户”分配_id的nodejs代码
var updateObj = {$addToSet: {clients:resultClient._id} };
// update creator company.clients
creatorCompany.update(updateObj, function(err, result) { ...}
当我 console.log "req.session.user.company_id" 和 "resultClient._id" 时,它们看起来都像字符串类型。怎么会在 MongoDB 中成为 ObjectID?如果有自动转换,如何使这种行为保持一致?
谢谢!