2012-12-02 103 views
3

这里有一些关于如何将查询结果保存到javascript varialbe的问题,但我只是无法实现它们。关键是我有一个很难的查询,所以这个问题在我看来是独一无二的。如何将mongodb查询的结果保存到JavaScript变量中?

这是问题所在。我有一个名为“drives”的集合和一个名为“driveDate”的键。我需要保存1个变量和最小日期,其他日期最大。

的最小日期查询是:

> db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1) 

结果是:

{ "driveDate" : ISODate("2012-01-11T17:24:12.676Z") } 

丹我如何保存到一个变量,我可以这样做:

tmp = db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1) 

谢谢!

+0

您的查询在哪里运行?它在服务器端吗?还是它在客户端运行? – Ivan

+0

@Ivan,查询是直接在mongo控制台上。 (命令“mongo”)。数据库本地安装在我的机器上。我已经想出了如何做到这一点。谢谢。 – otmezger

回答

11

假设你试图做到这一点在shell:

tmp = db.drives.find({}, {_id:0, driveDate:1}).sort({driveDate:1}).limit(1).toArray()[0] 

find返回您需要遍历检索实际文件的光标。在光标上调用toArray将其转换为文档数组。

+1

我不确定是否'sort()'在'findOne'上工作,因为它不会返回一个游标,因为这个链没有'sort()的功能' – Sammaye

+0

嗨,谢谢你的回答。我不断收到此错误:“Sun Dec 2 21:58:13 TypeError:db.drives.findOne({},{_id:0,driveDate:1})。sort不是函数(shell):1”.. 。不知何故,findOne无法使用排序 – otmezger

+0

@otmezger对不起,Sam的权利,似乎没有办法用shell中的findOne排序。查看更新的答案。 – JohnnyHK

3

经过一段时间的摸索,我得到了解决方案。这里是,以供将来参考:

var cursor = db.drives.find({},{"_id":1}).sort({"driveDate":1}).limit(1) 

然后,我可以从光标获取文档这样

var myDate = cursor.next() 

就是这样。感谢您的帮助

相关问题