次のクエリを確認してください。
db.models.findOne({ "value.userId": { $ne: null } }, { "value.userId":1}).value.userId == null
これは言う:
- null以外のユーザーIDフィールドを持つレコードを検索します
- 結果にユーザーIDを返します
- その値をnullと比較します
null値のないレコードのみを返すため、その結果をnullと比較すると常にfalseが返されます。ただし、これは常にtrueを返します。
.findOne(...)を実行して、比較を実行する代わりにそれを出力すると、次のようになります。
{ "_id": 4, "value": { "userId": null }
誰かがここで何が起こっているのか手がかりを持っていますか?
編集:このフィールドの「タイプ」は明らかに6であり、10ではありません。これはnullのはずです。EDIT2:どうやらタイプ6は「未定義」です-なぜそれがnullを出力するのかわかりません...