時折、javascript が科学表記法として解釈できる _id 値を持つドキュメントを取得します。
次のクエリを実行した問題のみを示します。
db.users.find({$where:'this._id > 1'}).count()
2
このコレクションには何百ものドキュメントがありますが、数値として評価されるこれら 2 つは、{$in:[]} 句で使用されると問題を引き起こします。
db.users.findOne({$where:'this._id > 1'})._id
ObjectId("5225141850742e0000002331") - 科学表記法のようですね。
その _id を別のコレクションに文字列として保存したい場合、次のように言うと問題が発生すると思います
friendsCollection: { _uid:"5225141850742e0000002331" //その他のプロパティはこちら }
その値を取得すると、Node (または Mongoose) はそれを "Infinity" のような数値として解釈します。次に、私のコードは、エラーをスローする {_id:{$in:[Infinity]}} でユーザーを検索しようとします。
_id 値を保存したり、_id であることがわかっているプロパティを処理したりするためのより堅牢な方法があると思いますが、その方法はわかりません。