1

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

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

我现在如何询问姓名?

4

3 回答 3

1

我假设您在 mongo shell 中工作。

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

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

所以要查看你有什么值,你可以运行命令

names

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

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

names[1]

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

names[1].names
于 2013-08-16T15:43:08.557 回答
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
于 2013-08-16T16:00:06.077 回答
1

与 head 最接近的类似物是:

使用序列化对象var s = JSON.stringify(names)

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

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

于 2013-08-16T18:49:31.140 回答