如何将MongoDB查询结果保存到JavaScript变量中?

4
这里有一些关于如何将查询结果保存到JavaScript变量中的问题,但我无法实现它们。问题在于,我有一个更难的查询,所以这个问题是独特的。
这就是问题所在。我有一个名为“drives”的集合和一个名为“driveDate”的键。我需要保存一个变量,其中包含最小日期,另一个变量包含最大日期。
最小日期的查询如下:
> db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1)

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

我该如何将这个保存到变量中,我可以这样做吗:
``` python variable_name = '这里填入需要保存的内容' ```
tmp = db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1)

谢谢!!!


你的查询在哪里运行?是在服务器端吗?还是在客户端运行? - Ivan
@Ivan,查询直接在Mongo控制台上进行(使用命令“mongo”)。数据库已经本地安装在我的机器上。我已经弄清楚了如何操作。谢谢。 - otmezger
2个回答

13
假设你正在尝试在 shell 中执行此操作:
 tmp = db.drives.find({}, {_id:0, driveDate:1}).sort({driveDate:1}).limit(1).toArray()[0]

find 返回一个游标,需要迭代该游标以检索实际文档。在游标上调用 toArray 将其转换为文档数组。


1
我不确定sort()是否适用于findOne,因为它不返回游标,因此链条将没有sort()函数。 - Sammaye
嗨,谢谢你的回答。我一直收到这个错误:“Sun Dec 2 21:58:13 TypeError:db.drives.findOne({},{_id:0,driveDate:1})。sort不是一个函数(shell):1”... 不知何故findOne无法与sort一起使用。 - otmezger
@otmezger 对不起,Sam是对的,在shell中似乎没有办法使用findOne进行排序。请查看更新的答案。 - JohnnyHK

5

在研究了一段时间后,我找到了解决方案。以下是解决方案,以备将来参考:

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

然后我可以像这样从光标中获取文档。
var myDate = cursor.next()

就这样了。感谢你的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接