рдХреНрдпрд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рднреАрддрд░ рдПрдореНрдмреЗрдбреЗрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ? рдпрд╛рдиреА рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп:
var myschema = new mongoose.Schema({
field : { foo: String, bar: String }
});
рдХреБрдЫ рдРрд╕рд╛ рдХрд╣рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ:
var myschema = new mongoose.Schema({
field : { *: String }
});
рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рд░рдгреА рдмрдирд╛рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рдирд╣реАрдВ рдкрддрд╛ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╡рд╣рд╛рдБ рдирд╣реА рд╣реИред
Mixed
рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
@aheckmann - рдпрд╣реА рдореБрдЭреЗ рдбрд░ рдерд╛, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИ рдпрд╛ рдпрджрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?
@TooTallNate - рдареАрдХ рд╣реИ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдорд┐рд╢реНрд░рд┐рдд рдХреЗ рд╕рд╛рде рд╣реИ рдЖрдк рд╕рднреА рд╕рддреНрдпрд╛рдкрди/рд╕реНрдХреАрдорд╛ рд╕рд╛рдордЧреНрд░реА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рдорд░реНрдерд┐рдд (рдирд╛рдорд┐рдд рдХреБрдВрдЬреА рдФрд░ рд╕рд░рдгреА) рдПрдореНрдмреЗрдбреЗрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рддреА рд╣реИред
@ordrin рдХреЛ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрддрдирд╛ рдЧреВрдврд╝ рдХреБрдЫ рдХрд░ рд░рд╣рд╛ рдерд╛! рд▓рд╛рдирдд рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
рдореИрдВ рдПрдХ рдПрд╕реАрдПрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореЗрд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ _ids рд╣реИрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВред
рдореИрдВ рдЙрди рдЖрдИрдбреА рдХреЛ рдЕрдкрдиреЗ рд╕рджрд╕реНрдп рдХреЗ рд╕рджрд╕реНрдп рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛ рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдЬрдмрдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ "рдХрд╛рд░реНрдп" рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рддрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдбреАрдмреАрдЖрд░рдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЦреАрдВрдЪ рд╕рдХреВрдВред
@ordrin рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдорд┐рд╢реНрд░рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦрд╛ рд╣реИ? рдореИрдВрдиреЗ рдмреА/рд╕реАрдЖрдИ рдХреЛ "рдПрдореНрдмреЗрдбреЗрдб рдбреЙрдХреНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЛрдВрдЧреЛрдбреАрдмреА рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдорд┐рд╢реНрд░рд┐рдд рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
var myschema = new mongoose.Schema({
field : mongoose.Schema.Types.Mixed
});
рдЖрдкрдиреЗ рдЬреЛ рдорд╛рдВрдЧрд╛ рд╣реИ рд╡рд╣ рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдлрд╝реАрд▓реНрдб' рдХреЛ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВред
myschema.path('field').validate(yourCustomValidator, 'your custom vaildator failed msg');
function yourCustomValidator (value) {
// check that value is an object etc
return true|false
}
var M = mongoose.model('M', myschema);
var m = new M;
m.field = { might: "work", for: "you" }
m.save();
рдореИрдВ рдмрд╕ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕реНрдХреАрдорд╛ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рдХреБрдВрдЬреА рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рд╕рддреНрдпрд╛рдкрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХреЗрдВред
new mongoose.Schema({
dynamicKey: {foo: Number, isAwesome: Boolean}
});
or
new mongoose.Schema({
dynamicKey: value is always only a Number
});
+1
+1
+1ред
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ SO рдкреЛрд╕реНрдЯ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдХреБрдВрдЬреА рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкрддрд╛ рд╣реИ рддреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рдЕрдЧрд░ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рддреЛ рдореИрдВ рдПрдХ рд╕реНрдХреАрдорд╛ рд▓реЗрдЖрдЙрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ
new Schema({
myDynamicKeyObj: {
type: Dynamic,
key: {type: String, match: /[a-z]*/i},
val: [String]
}
})
+1
рдЧрддрд┐рд╢реАрд▓ рдХреБрдВрдЬреА рд░рдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдЬреЗрд╕рди-рд╕реНрдХреАрдорд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреБрдВрдЬреА рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
"^[0-9]+$": {
"$ref": "#/definitions/mydefinition"
}
рдЧрддрд┐рд╢реАрд▓ рдХреБрдВрдЬреА рд╡рд╛рд▓реЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдпрд╛ рдЕрднреА рднреА рдирд╣реАрдВ?
2 рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
{ 123: { firstname: "firstA", lastname: "lastA" } }
{ 124: { firstname: "firstB", lastname: "lastB" } }
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рдореЛрдВрдЧреЛрдбрдм рдбреЙрдХреНрд╕ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред http://docs.mongodb.org/ecosystem/use-cases/pre-aggregated-reports/
+1
:+1:
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
рдореБрдЭреЗ рдпрд╣ рдПрдХ рдХреБрдПрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ
+1
рдЙрди рдЕрд░реНрдерд╣реАрди +1 рдХреЛ рд░реЛрдХреЗрдВ, рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЗ рдЗрдирдмреЙрдХреНрд╕ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП "рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ" рдФрд░ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдмрдЯрди рд╣реИрдВред
+1
@qqilihq , plx рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдлрд┐рд░ рд╣рдо +1 рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, kthxbye
"рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА"
5 рд╕рд╛рд▓ рдмрд╛рдж, рдПрдХ рдЯрди +1 рдХреЗ рдмрд╛рдж, рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИ?
рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ рдФрд░ #1522 рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗрдВред
рдпрд╣ рдлреАрдЪрд░ рдЬрд░реВрд░реА рд╣реИред
рдпрд╣ рдлреАрдЪрд░ рдЗрддрдиреА рдЪреБрдкрдЪрд╛рдк рдХреИрд╕реЗ рд░рд┐рд▓реАрдЬ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА?! рдореИрдВ
@adamreisnz рдпреЛрдЧреНрдп рдзрдиреНрдпрд╡рд╛рджред рдЖрдк Mongoose рдлреАрдЪрд░ рдЕрдкрдбреЗрдЯ рдХрд╣рд╛рдВ рдвреВрдВрдврддреЗ рд╣реИрдВ? рдЪреЗрдВрдЬрд▓реЙрдЧ? рдЯреНрд╡рд┐рдЯрд░?
рдЪреИрдВрдЬ рдЖрдорддреМрд░ рдкрд░, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдлреАрдЪрд░ рдЬрд░реВрд░реА рд╣реИред