我正在使用node.js和mongoose。我正在创建一个REST API来公开我的用户模型:
var userSchema = new Schema({
_id: {type:Number},
username: {type:String},
age: {type:Number},
genre:{type: Number,ref:'Genre'},
country: {type: Number,ref:'Country'}
});
如您所见,我决定包含一个_id字段,因此如果我想创建一个新用户,我需要为该字段生成值,例如:
exports.createUser = function(req,res){
var user = new User({
_id: //Generate and assing value here
//Other properties are retrieved from the request object
});
};
我怎样才能“生成”或正确地为我的_id字段赋值? mongo如何处理这个问题?
答案 0 :(得分:5)
我从未使用猫鼬。但如果_id
未包含在插入查询中,则mongodb驱动程序将为ObjectId对象生成_id
。如果您希望使用自己的_id
,则由您来决定其类型和长度,并且您必须保证其在集合中的唯一性,因为任何插入的尝试具有重复_id
的文档将失败。
_id
的方法,那么this question的已接受答案可能会有用。
提供了一定程度的保证唯一性。答案 1 :(得分:0)
mongoDB要求_id(如果提供)是唯一的。如果没有提供_id,它将由客户端驱动程序(即不是mongod服务器!)创建为12字节的BSON ObjectId,具有以下结构:
4-byte value representing the seconds since the Unix epoch,
3-byte machine identifier,
2-byte process id, and
3-byte counter, starting with a random value.
此处提供了更多信息:http://docs.mongodb.org/manual/reference/object-id