我在聚合管道中运行了一些东西并将其分配给一个变量。我不确定返回对象的结构究竟是什么,并且想要某种“头部”让我逐行查看它,或者一些让我查看其中包含哪些对象的函数. 这个的语法是什么?
var names = db.inst.aggregate(
{ $group : {
_id : "$inst.state",
names: {$addToSet: "$inst.name"}
}}
).result
我现在如何询问姓名?
我在聚合管道中运行了一些东西并将其分配给一个变量。我不确定返回对象的结构究竟是什么,并且想要某种“头部”让我逐行查看它,或者一些让我查看其中包含哪些对象的函数. 这个的语法是什么?
var names = db.inst.aggregate(
{ $group : {
_id : "$inst.state",
names: {$addToSet: "$inst.name"}
}}
).result
我现在如何询问姓名?
我假设您在 mongo shell 中工作。
如果你是那么你现在拥有的是一个 JSON 对象,我假设它看起来像这样:
[
{"_id": "fred", "names": ["fred", "john"]},
{"_id": "jack", "names": ["jack", "bill"]}
]
所以要查看你有什么值,你可以运行命令
names
这将向您显示集合中的所有结果
要查看单个结果,您可以使用数组的索引:
names[1]
要获取项目的属性,只需使用点表示法:
names[1].names
制作一个将输出结果的 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
与 head 最接近的类似物是:
使用序列化对象var s = JSON.stringify(names)
使用 - 从字符串中提取所需的部分,s.slice(from,to);
或在其上运行正则表达式以找到您需要的部分。
除此之外,您可以通过数组索引从结果中引用单个项目。