配列値を更新したいのですが、適切な方法がわからないため、次の方法を試しましたが、うまくいきませんでした。
私のモデル、私のモデルの子供フィールド
childrens: {
type: Array,
default: ''
}
私の質問、
Employeehierarchy.update({ _id: employeeparent._id} ,{ $set: {"$Push": { "childrens": employee._id }} })
.exec(function (err, managerparent) {});
誰でも助けてくれますか?.
_$set
_ (と_$Push
_ネストされた演算子と同じ更新式内。
更新演算子 を使用するための正しい構文は次のとおりです。
_{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
_
ここで、_<operator1>, <operator2>
_は here で指定された任意の更新演算子リストから取得できます。
配列に新しい要素を追加するには、単一の_$Push
_演算子で十分です。 findByIdAndUpdate
updateメソッドを使用して、変更されたドキュメントを
_Employeehierarchy.findByIdAndUpdate(employeeparent._id,
{ "$Push": { "childrens": employee._id } },
{ "new": true, "upsert": true },
function (err, managerparent) {
if (err) throw err;
console.log(managerparent);
}
);
_
元のupdate()
メソッドを使用すると、構文は
_Employeehierarchy.update(
{ "_id": employeeparent._id},
{ "$Push": { "childrens": employee._id } },
function (err, raw) {
if (err) return handleError(err);
console.log('The raw response from Mongo was ', raw);
}
);
_
コールバック関数が引数_(err, raw)
_を受け取る場所
err
は、発生した場合のエラーですraw
はMongoからの完全な応答です変更されたドキュメントをチェックするため、findByIdAndUpdate
関数を使用することをお勧めしますupdate()
メソッドは変更されたドキュメントではなく、mongoからの完全な書き込み結果を提供します。
ドキュメント内のフィールドを更新し、同時に要素を配列に追加する場合は、次の操作を実行できます。
_Employeehierarchy.findByIdAndUpdate(employeeparent._id,
{
"$set": { "name": "foo" },
"$Push": { "childrens": employee._id }
}
{ "new": true, "upsert": true },
function (err, managerparent) {
if (err) throw err;
console.log(managerparent);
}
);
_
上記はname
フィールドを「foo」に更新し、従業員IDをchildrens
配列に追加します。
これに従うことができます
childrens
に文字列値が含まれる場合、モデルは次のようになります。
childrens: [{
type : String
}]
childrens
に別のコレクション_id
のObjectId値が含まれていて、設定する場合、モデルは次のようになります。
childrens: [{
type : mongoose.Schema.Types.ObjectId,
ref: 'refModelName'
}]
$set
を使用する必要はありません。$Push
を使用してchildrens
配列に値を挿入します。クエリは次のようになります:
Employeehierarchy.update(
{ _id: employeeparent._id},
{"$Push": { "childrens": employee._id } }
).exec(function (err, managerparent) {
//
});
これは私が推測するのに役立ちます
Employeehierarchy.findOneAndUpdate(
{ _id:employeeparent._id },
{ $set: { "childrens": employee._id }}
)