2017-01-16 7 views
0

Monthsという名前の配列が含まれているドキュメントがあります。配列の各要素には、それが参照する月(yyyyMM)のいずれかを示すintフィールドがあります。 201612、201701などaddToSetはどのように複製を決定しますか?

このような各要素には、その特定の月に関連する追加のフィールドも含まれています。例えばその後

Months[0].month == 201612 
Months[1].month == 201701 

、私はMonths[1].month == 201701.

でaddToSet を呼び出す:numOfItems、文字列の国、など今

が、私は、配列内の唯一の2つの要素を持つような文書を持っていると仮定するとint型

addToSetは、これが重複しているかどうかをどのように判断しますか?

すべてサブエレメントMonths[1]を調べて比較しますか? Months配列の要素のインデックスのみを検査しますか?

+1

オブジェクト比較します – Sammaye

+0

@Sammayeありがとう!あなたの答えを明確にするために、追加する要素のすべてのサブ要素を調べて比較するのですか? – datps

+1

実際には、単一のプロパティなどで比較する場合は、クエリに条件を追加する必要があります – Sammaye

答えて

1

これはMongoDBから直接入手したものです。

MongoDB - AddToSet

値が文書である場合、MongoDBは、アレイ内の既存のドキュメントが正確-ことが付き文書と一致した場合、文書が複製であると判断します。すなわち、既存の文書は全く同じフィールドおよび値を有し、フィールドは同じ順序である。このようにフィールドの順序は重要であり、MongoDBがドキュメント内のフィールドのサブセットのみを比較して、そのドキュメントが既存の配列要素の複製であるかどうかを判断することはできません。

関連する問題