重複の可能性:
mongo はデータをアップサートできますか?
次のように定義されたスキーマがあります。
var Permission = new Schema({
_id: String, // email address
role: String // "admin" or "member"
});
var Org = new Schema({
name: {type: String, index: {unique: true, dropDups: true}, trim: true},
permissions: [Permission]
});
サブドキュメント行を一致させて更新しようとしています (私の場合は「権限」、または一致しない場合は新しい許可行を挿入します (例: upsert)。
ここに私が書いたものがあります:
exports.updatePermissions = function(req, res) {
return Org
.update(
{name:"my_org", "permissions.$._id": req.body.email},
{$set: {"permissions.$.role": req.body.role}})
.exec(function(err) {
// stuff
});
};
MongoDB はこれを受け入れているようですが (たとえば、エラーはありません)、DB に変更はありません。mongoシェルでも次のことを試しました:
db.orgs.update({"name":"my_org", "permissions.$._id":"newuser@email.com"}, {$set: {"permissions.$.role": "member"}});
再度、Mongo はクエリを受け入れましたが、変更はありませんでした。変更しようとしているドキュメントは次のとおりです。
{
"name" : "my_org",
"permissions" : [
{
"_id" : "newuser@email.com",
"role" : "admin"
}
]
}
助言がありますか?どうもありがとう