Zatrzymaj Mongoose od tworzenia właściwości id dla pozycji tablicy pod-dokumentu
Jeśli masz tablice subdokumentów, Mongoose automatycznie tworzy identyfikatory dla każdego z nich. Przykład:
{
_id: "mainId"
subdocArray: [
{
_id: "unwantedId",
field: "value"
},
{
_id: "unwantedId",
field: "value"
}
]
}
Czy istnieje sposób, aby Mangusta nie tworzyła identyfikatorów dla obiektów w tablicy?
5 answers
To proste, możesz to zdefiniować w podpunkcie:
var mongoose = require("mongoose");
var subSchema = mongoose.Schema({
//your subschema content
},{ _id : false });
var schema = mongoose.Schema({
// schema content
subSchemaCollection : [subSchema]
});
var model = mongoose.model('tablename', schema);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 11:52:07
Można tworzyć dokumenty podrzędne bez schematu i unikać _id. Wystarczy dodać _id: false do deklaracji subdocument.
var schema = new mongoose.Schema({
field1:{type:String},
subdocArray:[{
_id:false,
field :{type:String}
}]
});
Zapobiegnie to tworzeniu pola _id w subdoc. Testowane w Mongoose 3.8.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 09:01:00
Dodatkowo, jeśli używasz obiektowej składni do określenia podprogramu, możesz po prostu dodać _id: false
, aby go supresować.
{
sub: {
property1: String,
property2: String,
_id: false
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 05:12:41
Używam mongoose 4.6.3 i wszystko, co musiałem zrobić, to dodać _id: false w schemacie, nie trzeba robić podprogramu.
{
_id: ObjectId
subdocArray: [
{
_id: false,
field: "String"
}
]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 23:08:26
W mongoose V. 3 masz teraz alternatywny sposób tworzenia pod-dokumentów bez relacji rodzice-dzieci. A te dokumenty podrzędne nie będą miały indeksu
var mongoose = require("mongoose");
var schema = mongoose.Schema({
// schema content
subSchema: [{
firstname: 'sub name',
lastname: 'last name'
}]
});
var model = mongoose.model('tablename', schema);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-24 11:00:59