[解決済み】Mongooseで配列の値を更新する方法
質問
私は配列の値を更新したいのですが、それを行うための適切な方法についてよく分からないので、私は以下の方法を試してみましたが、私のために動作しませんでした。
私のモデルです。 モデル内のchildrenフィールド
childrens: {
type: Array,
default: ''
}
私のクエリ
Employeehierarchy.update({ _id: employeeparent._id} ,{ $set: {"$push": { "childrens": employee._id }} })
.exec(function (err, managerparent) {});
誰か私にhelp.Thanksを提供することができます。
どのように解決するのですか?
を同時に使用することはできません。
$set
と
$push
をネストした演算子と同じ更新式で使用することができます。
を使用するための正しい構文です。 update 演算子 は次のようになります。
{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
ここで
<operator1>, <operator2>
は、指定された更新オペレータのリストのいずれかから選択することができます。
ここで
.
配列に新しい要素を追加するには、1つの
$push
演算子で十分です。
findByIdAndUpdate
として、変更されたドキュメントを返すための更新メソッドです。
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
の配列になります。
関連
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] 特定の値を含む配列で文書を検索する
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み】mongooseでmongoの配列にアイテムをプッシュする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] http-server コマンドが見つかりません。
-
[解決済み] Json Web Token verify() return jwt malformed