ドキュメントの配列に値を含まないドキュメントを選択しようとしています。
私は 2 つの問題を抱えています。個別に提示します。
(1) 配列内の値のクエリで $not 演算子を使用できません。たとえば、コレクションに次のドキュメントがあるとします。
{ _id: ObjectId("000000000000000000000000"),
mylist: [ "red", "green", "blue" ] }
次を使用してこのドキュメントを選択できます。
db.myCol.find({mylist:"red"})
ただし、オレンジがないことをテストして、このドキュメントを選択したいと思います。
db.myCol.find({$not:{mylist:"orange"}})
これが機能しないのはなぜですか?
(2) 配列値が ObjectIds の場合、配列クエリで値を取得できません。
{ _id: Object("000000000000000000000000"),
mylist: [ ObjectId("111111111111111111111111") ] }
以下はこのドキュメントを取得しません:
myCol.find({mylist:ObjectId("111111111111111111111111")})
誰かが私が間違っているかもしれないことを提案できますか?