に配列フィールドのサイズ3未満でドキュメントを削除私は今、私は、配列のどのsize
でコレクションcol
から文書を削除するこのMongoDBの
{
{
intField:123,
strField:'hi',
arrField:[1,2,3]
},
{
intField:12,
strField:'hello',
arrField:[1,2,3,4]
},
{
intField:125,
strField:'hell',
arrField:[1]
}
}
のように見える文書を持っているcol
という名前のMongoDBのコレクションを持っていますフィールドが2未満
あるので、私は今、この本
db.col.remove({'arrField':{"$size":{"$lt":2}}})
のように見えるのクエリを書きましたクエリは何もしません。私はdb.col.find()
とチェックし、すべての文書を返します。このクエリで何が間違っていますか?
$size
のドキュメントから
しかし、受け入れられた答えによると、これは動作しないように、$ sizeを範囲問合せできません。 – UpTheCreek
これは絶対に動作します。これはネイティブレンジクエリではなく、興味のあるすべての$ size値の単純な古いOR演算です。 「arrField $ size 0-2のすべての文書を私に渡す」と言うのではなく、「arrField $ size 0、arrField $ size 1、arrField $ size 2」のすべての文書を要求することができます。明らかに、これはあなたが興味のある$ size値の範囲が小さい場合にのみ実行可能ですが、そのような場合はarrFieldSizeカウンタなどを追加するよりもうまく機能し、便利かもしれません。 –
申し訳ありません - 私の間違い。あなたが編集をすると、私は前に答えを与えたdownvoteを削除することができます。 – UpTheCreek