如何遍历和读取MongoDB集合中的所有文档?

时间:2014-05-27 13:19:08

标签: mongodb

我的xyz_services集合有三个文档:

xyz_services

{
    service: "XYZ for under 1,500 sqft properties",
    minSize: 0,
    maxSize: 1500,
    price: 100,
    _id: "9LnnnJx3itBts8Bgp"
}
{
    service: "XYZ for 1,501 - 2,000 sqft properties",
    minSize: 1501,
    maxSize: 2000,
    price: 125,
    _id: "kmMnxuBfB2Qimdwkc"
}
{
    service: "XYZ for 2,001 - 3,000 sqft properties",
    minSize: 2001,
    maxSize: 3000,
    price: 150,
    _id: "jE8cPwRwkPmvRqZdB"
}

我从表单提交中获得一个整数size

var size = 2500

我需要遍历此xyz_services集合中的三个单独文档中的每一个,并查看哪个文档匹配

minSize <= size <= maxSize

找到匹配后,我需要从文档中获取price值。

(在这种情况下,尺寸= 2500,价格为150)

我完全不确定如何写这个 - 还有另外一个关于循环文档的问题,但我担心这是我的头脑。

任何人都可以帮我解决这些问题吗?

3 个答案:

答案 0 :(得分:3)

您可以使用以下代码段

  

db.collection.findOne({&#34; minSize&#34;:{$ lte:2500},&#34; maxSize&#34;:{$ gte:2500}},{_ id:0,price: 1})

答案 1 :(得分:1)

对于此特定,您不需要循环遍历集合中的所有文档。 您可以写下一个简单的查询,只返回满足此条件的所有文档的价格minSize <= size <= maxSize

查询将是

      db.xyz_services.find({"minSize" : {$lte : 2500}, "maxSize" : {$gte : 2500}}, {_id : 0, price : 1})

以上查询将仅返回满足条件的所有文档的价格。如果您正在使用某些驱动程序(如java或其他驱动程序),则可以动态传递size(在这种情况下为2500)的值。

答案 2 :(得分:0)

仅供参考,这是我用来返回&#34; 150&#34;

的值的完整代码
db.xyz_services.findOne({"minSize" : {$lte : 2500}, "maxSize" : {$gte : 2500}}, {_id : 0, price : 1}).price