你有一些奇怪的命名約定(我曾與camelCase教過,雖然最初來自PascalCase)和一種奇怪的問道。但我認爲你問的是「我創建時_id在哪裏?」,這個問題的答案是,它已經存在:
var async = require('async'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
var nestedSchema = new Schema({
id: Number,
someData: String
},{ "_id": false });
var mySchema = new Schema({
exampleField: [nestedSchema]
});
var MyModel = mongoose.model('MyModel', mySchema, 'mymodel');
var model = new MyModel();
console.log(model);
將會產生類似:
{ _id: 55c61af0696bc49a29e4133e, exampleField: [] }
因此,當您創建新實例,您保存或做任何事情,甚至在_id
始終存在其他。
否則,如果你正在尋找你的嵌入式陣列項目定義一個「id」值,並明確「忽略它,就可以產生像我那麼做類似的默認_id
:
var nestedSchema = new Schema({
id: { type: Number, default: genId() },
someData: String
},{ "_id": false });
凡genId()
函數返回的是該字段的值,除非指定了這個值。所以「理想情況下」這裏的genId()
函數做了類似於Create an autoincrementing sequence field中的記錄,並且每次調用新實例時都會用「syncronous」響應來分配一個全新的「id」值。
或者否則剛落,即場和接受貓鼬生成的默認_id
值數組是這樣的:
var nestedSchema = new Schema({
id: { type: Number, default: genId() },
someData: String
});
凡genId()
是一個外部功能架構和bascially只是retuns被用作「缺省值「在創作時,沒有指定其他價值。這也發生在「保存之前」或任何其他操作,並且與對象的實例創建一樣簡單。
而之前之後的例子:
var async = require('async'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
var nestedSchema = new Schema({
someData: String
});
var mySchema = new Schema({
exampleField: [nestedSchema]
});
var MyModel = mongoose.model('MyModel', mySchema, 'mymodel');
var model = new MyModel({ "exampleField": [{ "someData": "here" }]});
console.log(model);
主要生產:
{ _id: 55c633199f529d0b2a890dba,
exampleField: [ { someData: 'here', _id: 55c633199f529d0b2a890dbb } ] }
這個命名約定是從貓鼬的文檔中借用的,所以它可能很奇怪。我的問題不是'_id'字段,因爲我需要不同的編號方式,而不是已經在mongo中實現(但我提到過,不是嗎?)。無論如何 - 這不是一個答案。 –
@DawidPura那麼問題是什麼?提到了什麼?我什麼也沒看見。不需要冒犯,因爲我沒有得罪。 –
我編輯的問題,更準確地說,謝謝:) –