我有一个"产品"与这些文件:
{"_id" : 142347106,"name" : "product 1"}
{"_id" : 135377126,"name" : "product 2"}
我还有另一个系列"价格" :
{
"_id" : ObjectId("59310a6bad6e99863c2a6860"),
"region" : 1111,
"price" : 7.6,
"id_start" : 174683814,
"id_end" : 174686813,
"qte" : 3000
}
产品的价格可以在产品的_id中找到,该产品介于" id_start"和" id_end"。 因此,如果我想获得所有产品的价格,我可以进行以下查询:
db.getCollection("product").find({}).forEach( function(myProduct) {
db.getCollection("price").findOne({$and: [ { "id_start":{$lt: parseInt(myProduct._id) } }, {"id_end":{$gt: parseInt(myProduct._id)}}]})
});
这是有效的,但我的问题是我有很多文件,当我运行查询时,它始终以" errmsg" :"找不到光标,光标id:...
所以我想通过使用聚合框架来查找另一种查询方式。
你有什么想法吗?
我可以将两个系列合二为一,但我并不喜欢这样: - /
非常感谢!