私の頭を丸くするのに苦労しています - あらゆる方法を試しましたが、私は事を過度に複雑にしていると感じることはできません。mongooseで配列を更新する
Iは、例えば、アレイとして私のMongoDBデータベースに格納された値のセットを有する:
{
_id: 1234,
users: ['Bob', 'James', 'Catherine', 'Emma']
}
新しい配列は、次いで、例えば、サーバに自分のアプリから送信されます私は何をしたいのは、更新が配列するように
var newArray = ['Edward', 'Bob', 'David', 'James', 'Ellie', 'Monica']
です:
- 両方の配列内のすべての要素があるが削除され、新しいアレイで現在の任意の要素データベースではなく、新しい配列ではなく
だから、最終resul追加されたオリジナルのもので
['Bob', 'James', 'Edward', 'David', 'Ellie', 'Monica']
私は単に
documents.findOneAndUpdate({ id: 1234 }, {
$set: { users: newArray }
})
を実行しようとしましたが、それはないすべては、既存のものに新しいアレイを追加しているので、私は重複で終わるし、それ不要な値を削除しません - 以下にその結果:
{
_id: 1234,
users: ['Bob', 'Bob', 'James', 'James', 'Catherine', 'Emma', 'David', 'Edward', 'Ellie', 'Monica']
}
私も試してみた:
を既存のものを複製せずに新しい値が追加されますが、新たに提出され、配列、すなわちにないものは削除されません:
{
_id: 1234,
users: ['Bob', 'James', 'Catherine', 'Emma', 'Edward', 'David', 'Ellie', 'Monica']
}
はせずにこれを行う簡単な方法はあります複雑な一連のネストされたループと、データベースへの複数の呼び出し(私は現時点では向いているようです)?
注:コールバックや.exec
の機能は上記のコードには含まれていません。これらは実行するために必要であることはわかっていますが、それらを含めるとちょっと複雑になると思います。
編集:これは私が実際に作業しているものの簡略化されたバージョンですが、私が達成しようとしていることを実証する必要があります。
ありがとうございます!
私は、[Lodas](https://lodash.com/docs/4.17.4#union)を使用してそれを – IARKI