如何使用Mongoose将文档插入到只有一个ObjectID的集合中?
我有一个JSON,我想存储在使用mongoose的集合。 我用来将文档插入到集合中的函数是:
UserSchema.statics.SaveDocument=function(docs,callback){ docs=JSON.parse(docs); this.create(docs,function(err,data){ if(err) callback(err); else callback(data); }); };
该集合的架构是:
var UserSchema = new Schema({ A : String, B : String, C : [ { D : Schema.Types.ObjectId, E : String, } ] });
我试图存储的JSON格式如下所示:
{ "A" : "something", "B" : "something", "C" : [ { "D" : "something", "E" : "Something", } ], }
并且存储到集合中的文档如下所示:
{ "_id" : ObjectId("55XXXXX"), "A" : "something", "B" : "something", "C" : [ { "D" : "something", "E" : "Something", "_id" : ObjectId("56XXXXX"), } ], "__v" : 0 }
现在,我想要的是存储由我的函数生成的ObjectId,而不是存储附加的Moneoose插入到元素C数组中的ObjectID。
我知道通过在函数中使用{id:false} ,我可以禁用自动生成的ID,但是我不能在C中使用mongoose插入的不必要的ID,因为这消除了ObjectID。
那么有人可以帮助我怎么做到这一点?
另一件事是我没有任何的想法,从“__V”:0进入收集?
对于__V部分:您可以通过附加{ versionKey: false }
来禁用它{ versionKey: false }
请参阅: http : { versionKey: false }
要删除C中的_id,你可以定义一个子模式
var C = mongoose.Schema({ //C schema content },{ _id : false });
并将您的原始架构更改为如下所示:
var UserSchema = new Schema({ A : String, B : String, C : [subSchema] .... ...)};
然后尝试插入新的文档。
也可以通过在Schema的元素C中添加_id:false来完成:
var UserSchema = new Schema({ C : [ { D : Schema.Types.ObjectId, E : String, _id : false } ] });
当有多个模式使用相同的子结构时,子模式可以帮助您,但是在这里我只有一个模式,所以使用子模式并不好。