如何“处理”一个非常长的MongoDB返回变量

时间:2013-08-16 15:31:36

标签: mongodb

我在聚合管道中运行了一些东西并将其分配给变量。我不确定返回对象的结构究竟是什么,并希望某种“头”可以让我逐行查看它,或者某些函数可以让我看到它包含哪些对象。这是什么语法?

var names = db.inst.aggregate(
    { $group : {
        _id : "$inst.state", 
        names: {$addToSet: "$inst.name"}
    }}
).result

我现在如何查询姓名?

3 个答案:

答案 0 :(得分:1)

我假设您正在使用mongo shell。

如果你现在拥有的是一个JSON对象,我假设它看起来像这样:

[
    {"_id": "fred", "names": ["fred", "john"]},
    {"_id": "jack", "names": ["jack", "bill"]}
]

因此,要查看您拥有的值,您只需运行命令

即可
names

这将显示集合中的所有结果

要查看单个结果,您只需使用数组的索引:

names[1]

要获取项目的属性,只需使用点表示法:

names[1].names

答案 1 :(得分:1)

制作一个js脚本,输出结果并从shell运行脚本,将输出重定向到您选择的文件,

因此,如果您使用的数据库是db_name,并且保存了在print-names-result.js中输出结果的脚本,只需将printjson(names)添加到现有脚本中,命令将为:

mongo db_name print-names-result.js > names.json

然后用编辑器检查文件names.json

当然,您也可以将输出直接传递给head命令:

mongo db_name print-names-result.js | head

答案 2 :(得分:1)

最接近头部的类似物是:

使用var s = JSON.stringify(names)

序列化对象

使用s.slice(from,to);从字符串中提取所需的部分 - 或在其上运行正则表达式以找到所需内容。

除此之外,您可以通过数组索引从结果中引用单个项目。