有没有办法在MongoDB中对已排序的结果集运行foreach()?

时间:2013-08-03 15:50:50

标签: mongodb

我的目标是按照“page_length”降序的顺序将集合1中的每个项目复制到集合2,这样新集合首先具有最大的page_length字段,第二个是第二大字段,依此类推。

我在Mongo中尝试了以下内容:

db.mycollection1.find().sort({page_length:-1}).foreach(function(d) { db.mycollection2.insert({"field1":d.field1, "field2":d.field2}); })

有一个错误,DBQuery没有方法'foreach'。我知道foreach()是find()的函数,但我希望找到一个解决方法。我甚至尝试了以下方法:

db.mycollection1.aggregate({$sort:{page_length:-1}}).foreach(function(d) { db.mycollection2.insert({"field1":d.field1, "field2":d.field2}); })

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

看起来你的第一个例子是正确的,只是你有foreach而不是forEach。它需要大写E

http://docs.mongodb.org/manual/reference/method/cursor.forEach/

答案 1 :(得分:1)

尝试:

db.mycollection1.find().sort().forEach(function(e) { ... })

答案 2 :(得分:1)

您需要先在这里排序我已根据客户的姓氏进行排序,请尝试以下查询

  

db.customers.find()。sort({lastname:1})。forEach(function(doc){print(“Customer name:”+ doc.lastname)});