後は、スキーマで新しいOBJECTIDを作成します - Robomongo出力、これは私のサンプル・データベースがはマングース
Domain.add({
domainName: {type: Types.Text, required: true, initial: true, index: true},
labconfigs :{type: Types.Relationship, ref: 'LabConfig',required: false,many: true},
});
Domain.schema.add({
userlevels: {
type: [{
labId : String,
userlevel: String
}]
}
});
ある
Domain
{
"_id" : ObjectId("5900dbdb4bc4c2f82400198c"),
"domainName" : "ABC.com",
"userlevels" : [
{
"labId" : "104",
"userlevel" : "true"
},
{
"labId" : "401",
"userlevel" : "false"
},
{
"labId" : "202",
"userlevel" : "true"
},
{
"labId" : "102",
"userlevel" : "true"
}
],
"labconfigs" : [
ObjectId("5900dbdb4bc4c2f824001986"),
ObjectId("5900dbdb4bc4c2f824001987"),
ObjectId("5900dbdb4bc4c2f824001988"),
ObjectId("5900dbdb4bc4c2f824001989")
],
"__v" : 1
}
をだから私は単にuserlevelsのための私の文書を更新している何をすべきかフィールド(UserlevelsフィールドはJSONオブジェクトの配列です)。私userlevelsフィールドを更新するには
ので、私はlabPublishedIDsの価値がある$設定
Domain.model.update({_id: req.params.id}, {$set: {"userlevels": userauthlevel.labpublishedIDs}}, function(err, result) {
if (err) return res.apiError('database error', err);
でこれ以下のマングース機能を与えた: -
{ labpublishedIDs:
[ { labId: '102', userlevel: 'false' },
{ labId: '104', userlevel: 'true' },
{ labId: '202', userlevel: 'false' },
{ labId: '401', userlevel: 'true' } ] }
しかし、今、私の更新機能の後に、それは新しいを作成します各Arrayオブジェクトを持つObjectId。 理由を理解できませんでした。おそらく、更新中の値が変更された&新しいObjectIdを作成します。何らかの理由で???ここで
はサンプル出力は、更新機能の後
/* 5 */
{
"_id" : ObjectId("5900dbdb4bc4c2f82400198d"),
"domainName" : "ABC.com",
"userlevels" : [
{
"labId" : "102",
"userlevel" : "false",
"_id" : ObjectId("5900de7ddcbe0a29fd7aaccb")
},
{
"labId" : "104",
"userlevel" : "true",
"_id" : ObjectId("5900de7ddcbe0a29fd7aacca")
},
{
"labId" : "202",
"userlevel" : "false",
"_id" : ObjectId("5900de7ddcbe0a29fd7aacc9")
},
{
"labId" : "401",
"userlevel" : "true",
"_id" : ObjectId("5900de7ddcbe0a29fd7aacc8")
}
],
"labconfigs" : [
ObjectId("5900dbdb4bc4c2f824001986"),
ObjectId("5900dbdb4bc4c2f824001987"),
ObjectId("5900dbdb4bc4c2f824001988"),
ObjectId("5900dbdb4bc4c2f824001989")
],
"__v" : 1
}