如何使用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 } ] }); 

当有多个模式使用相同的子结构时,子模式可以帮助您,但是在这里我只有一个模式,所以使用子模式并不好。