1

假设我获得了如下的查找结果:

{ "_id" : ObjectId("5221517ad1b328371c000003"), "user_id" : ObjectId("5221517ad1b328371c000001"), "item_id" : ObjectId("5221517ad1b328371c000002"), "preference" : 22 }

ObjectId 意义不大。有没有办法用对象的属性替换 ObjectId?例如。对于 user_id -> 更改为用户名?

4

1 回答 1

2

实际上,您不必使用 ObjectId 作为 _id 字段的数据类型。您可以使用任何数据类型(例如字符串)显式使用 set _id:

> db.users.insert({_id: 'johndoe', age: 21}) 
> db.users.insert({_id: 'janedoe', age: 27})
> db.users.find({_id: 'janedoe'})

{ "_id" : "janedoe", "age" : 27 }

或整数

db.items.insert({_id: 1, name: 'someitem'})

> db.items.find()

{ "_id" : 1, "name" : "someitem" }

只要你能保证它具有独特的价值:

db.users.insert({_id: 'janedoe', 年龄: 26})

E11000 duplicate key error index: foo.users.$_id_  dup key: { : "janedoe" }

另一方面 ObjectID 是有意义的,可用于获取文档创建时间: http ://docs.mongodb.org/manual/reference/object-id/

于 2013-09-01T10:51:26.977 回答