「||」を使用してクエリを実行すると、予期しない結果が表示されます および ""&&" コンディショニング操作。これはバグのようです。
バージョン:
C:\mongodb\bin>mongo.exe -version MongoDB シェル バージョン: 2.4.6
C:\mongodb\bin> C:\mongodb\bin>mongod.exe -version db version v2.4.6 Tue Oct 08 16:08:54.073 git バージョン: b9925db5eac369d77a3a5f5d98a145eaaacd9673
データベース レコード: ~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\mongodb\bin>
>
db.cars.find() { "_id" : 100, "利用可能" : 1, "color" : "red", "name" : "GTO", "year" : 3939 }
db.cars.find( {利用可能 : 1, 年 : 3939}) { "_id" : 100, "利用可能" : 1, "色" : "赤", "名前" : "GTO", "年" : 3939 }
>
db.cars.find( { $where: "this.available == 1" && "this.year == 3939" }) { "_id" : 100, "available" : 1, "color" : "red", 「名前」:「GTO」、「年」:3939}
> >
db.cars.find( { $where: "this.available == 1" || "this.year == 3939" }) { "_id" : 100, "available" : 1, "color" : "red" 、「名前」:「GTO」、「年」:3939}
見られる問題: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下のコマンドは、OR 条件演算 (つまり || を使用) を使用し、1 つの条件のみが true です。しかし、それでもエントリは表示されません..これは正しくありません。db.cars.find( { $where: "this.available == 11" || "this.year == 3939" })
以下のコマンドは、AND 条件演算 (つまり && を使用) を使用し、1 つの条件のみが true ですが、エントリが表示されますが、これは正しくありません。AND 条件の場合、両方の式が TRUE を返す必要があります。db.cars.find( { $where: "this.available == 11" && "this.year == 3939" }) { "_id" : 100, "available" : 1, "color" : "red", 「名前」:「GTO」、「年」:3939}
何か見逃した場合はお知らせください。
よろしく Jayanna Hallur ビッグデータ アナリスト、Wipro Technologies、バンガロール