Mongo find - 在找到时用对象的属性替换ObjectId

时间:2013-09-01 00:54:38

标签: mongodb

假设我获得了如下结果:

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

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

1 个答案:

答案 0 :(得分:2)

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

> 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/