1
column1>(column2 * 5)でレコードを取得できますか? 私はこれを試してみたが、何も返されない:MongoDBにcolumn1> column2 * 5を問い合わせる方法は?
db.getCollection('rss').find({'duplicates': {$gt: 'total_count' * 5}})
column1>(column2 * 5)でレコードを取得できますか? 私はこれを試してみたが、何も返されない:MongoDBにcolumn1> column2 * 5を問い合わせる方法は?
db.getCollection('rss').find({'duplicates': {$gt: 'total_count' * 5}})
あなたはJavaScriptの式に渡すことができます$where
演算子を使用することができ、次のいずれか
db.getCollection('rss').find({ "$where": "this.duplicates > (this.total_count * 5)" })
// sama as db.getCollection('rss').find("this.duplicates > (this.total_count * 5)")
またはを集約フレームワークを使用します$cmp
演算子は、上記よりもはるかに効果的です$where
を単独で使用すると、コレクションを実行する必要がありますsca各文書はBSONからJavaScriptオブジェクトに変換され、$where
の式を実行する必要があります。 $where
の式を満たすためにインデックスを使用することはできません。したがって、パフォーマンスが大幅に低下し、クエリがはるかに遅くなります。それは2つの値を比較し、最初の値が2番目の値より小さい場合は
$cmp
演算子を使用して
。
だからあなたの最後のクエリは次のようになります。
db.getCollection('rss').aggregate([
{
"$project": {
// Project other fields as required
"duplicates": 1,
"total_count": 1,
"isGreater": {
"$cmp": [
"$duplicates",
{ "$multiply": [ "$total_count", 5 ] }
]
}
}
},
{ "$match": { "isGreater": 1 } }
])