MongoDB支持复合键的概念吗?
假设我有一个如下所示的用户模式MongoDB支持复合键的概念吗?,mongodb,mongoose,Mongodb,Mongoose,假设我有一个如下所示的用户模式 var User = new db.Schema({ username : {type: String, unique: true} , password : String , email: String }); 为了适应有朋友的用户,我考虑如下修改模式 var User = new db.Schema({ username : {type: String, unique: true} , passwor
var User = new db.Schema({
username : {type: String, unique: true}
, password : String
, email: String
});
为了适应有朋友的用户,我考虑如下修改模式
var User = new db.Schema({
username : {type: String, unique: true}
, password : String
, email: String
, friends: [?]
});
我不只是存储objectid,而是考虑对数据库进行非规范化,以实现更快的查询。假设现在我只想在friends数组中存储ObjectId和username。有可能做像这样的事情吗
friends: [{String, String}]
其中两个字符串表示ObjectId和username?我不想创建一个全新的模式,因为我不需要新的ObjectId。当然可以,但我建议您命名字段,如(在Mongo shell语法中): 但是,您(当然)根本不必存储ObjectId,因为您的
用户名已经是唯一的了。见鬼,您甚至可以将用户的用户名作为\u ID
字段的ID:
user = {
'_id' : 'derick',
'password' : 'notmypw',
'email' : 'nospam@example.com',
'friends' : [
{ 'username' : 'adam' },
{ 'username' : 'ross' },
]
};
我认为在Mongoose中,您必须这样做(从阅读“在文档中定义文档”开始)
谢谢你知道这个语法是如何翻译成Mongoose.js的吗?我试过几次组合,但都没用。文档似乎无法处理此情况
user = {
'_id' : 'derick',
'password' : 'notmypw',
'email' : 'nospam@example.com',
'friends' : [
{ 'username' : 'adam' },
{ 'username' : 'ross' },
]
};
var Friend = new db.Schema({
username : String
});
var User = new db.Schema({
username : {type: String, unique: true}
, password : String
, email: String
, friends: [Friend]
});