2016-04-12 13 views
3

配列の要素を追加し、クエリの結果が挿入の場合はデータベースに新しいフィールドを追加します。挿入されていない場合(更新の場合)、配列を更新して新しいフィールドを追加したくないです。配列要素が挿入されている場合にのみ配列要素をプッシュする方法

挿入時に新しいフィールドを追加するには:私は$ setOnInsertを使用します。

$addToSet: { "children": {"age": 12}},

私が試した、私が使用して配列に要素を追加するには、$ setOnInsert内部$ addToSetを使用することはできないようです。では、配列要素が挿入要素の場合はどのように追加できますか?

答えて

3

ドキュメントを挿入する場合に作成されているので、あなただけの、その要素との最初のchildren配列を作成します。

{$setOnInsert: {children: [{age: 12}]}} 
+0

しかし、子供の配列は、すでにいくつかの要素を持っていますか?実際には、そのために私は$ addToSetまたは$ pushを使用していました。この方法では、子供の配列が消去されますが、間違っていますか? –

+0

'$ setOnInsert'はドキュメントが存在しない挿入の場合にのみ使用されるため、' children'配列要素は既に存在することはできません。 – JohnnyHK

+0

@YigitCanあなたの質問を誤解している場合、これはうまくいかないケースについてあなたの投稿に詳細を追加できますか? – JohnnyHK

関連する問題