JavaScript-没有字段名称的猫鼬结构聚合输出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-没有字段名称的猫鼬结构聚合输出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2360字,纯文字阅读大概需要4分钟。
内容图文
![JavaScript-没有字段名称的猫鼬结构聚合输出](/upload/InfoBanner/zyjiaocheng/662/2e5958b266d948c28df05b1c1288a6c1.jpg)
我正在使用聚合从子文档中分页数据.子文档没有严格的架构,因此每个文档的子文档可以有所不同,这使我难以构造输出,因为我不知道子文档的字段名称.
我在用什么
蒙戈3.0.0
节点0.10.33
猫鼬3.9.7
我的模特
var BodySchema = new Schema({random: String},{strict:false});
var FeedSchema = new Schema({
name: String,
body:[BodySchema]
});
我的数据看起来像这样
[{
_id:"...",
name:"Power Rangers feed",
body:[
{
"_id":"...",
"name" : "Jason",
"colour" : "Red",
"animal" : "T-rex"
},
{
"_id":"...",
"name" : "Billy",
"colour" : "Blue",
"animal" : "Triceratops"
},
{
"_id":"...",
"name" : "Zach",
"colour" : "Black",
"animal" : "Mastadon"
}
]
},
{
_id:"...",
name:"Transformers feed",
body:[
{
"_id":"...",
"name" : "Optimus Prime",
"team" : "Autobots",
"class" : "leader"
"alt-mode" : "truck"
},
{
"_id":"...",
"name" : "Bumblebee",
"team" : "Autobots",
"class" : "scout"
"alt-mode" : "VW Beetle"
},
{
"_id":"...",
"name" : "Blaster",
"team" : "Autobots",
"class" : "Commmunicator"
"alt-mode" : "Sterio"
},
{
"_id":"...",
"name" : "Hotrod",
"team" : "Autobots",
"class" : "Warrior"
"alt-mode" : "Car"
}
]
}]
我当前的汇总代码如下所示
feed.aggregate([
{'$match':{_id:id('550234d3d06039d507d238d8')}},
{'$unwind':'$body'},
{'$skip':2},
{'$limit':2},
{
'$project': {
'_id':"$body._id",
'body': "$body"
}
},
], function(err, result){
if(err){return(res.send(500, err))}
res.send(result);
});
我目前的结果看起来像这样
[{
_id:"...",
body:{
"_id":"...",
"name" : "Blaster",
"team" : "Autobots",
"class" : "Commmunicator"
"alt-mode" : "Sterio"
}
},
{
_id:"...",
body:{
"_id":"...",
"name" : "Hotrod",
"team" : "Autobots",
"class" : "Warrior"
"alt-mode" : "Car"
}
}]
我想要的结果看起来像这样
[
{
"_id":"...",
"name" : "Blaster",
"team" : "Autobots",
"class" : "Commmunicator"
"alt-mode" : "Sterio"
},
{
"_id":"...",
"name" : "Hotrod",
"team" : "Autobots",
"class" : "Warrior"
"alt-mode" : "Car"
}
]
我的问题
如何获得所需的结果结构.
解决方法:
因此,您将对此感到讨厌,但这就是聚合管道中的$project和$group阶段的工作方式.您需要“明确地”在输出中指定所需的所有字段.因此:
feed.aggregate([
{'$match':{_id:id('550234d3d06039d507d238d8')}},
{'$unwind':'$body'},
{'$skip':2},
{'$limit':2},
{
'$project': {
'_id':"$body._id",
'name': '$body.name',
'team': '$body.team',
'class': '$body.alt-mode'
}
},
], function(err, result){
那确实是唯一的方法.
但是,确实有很强的理由,并且大多数原理都在SQL SELECT中进行了备份,适用时*除外.
一般前提是,这类似于一般操作中的unix管道,因此,如果您认为:
grep | awk | sed
然后,这些操作在结构上似乎更加合乎逻辑.
内容总结
以上是互联网集市为您收集整理的JavaScript-没有字段名称的猫鼬结构聚合输出全部内容,希望文章能够帮你解决JavaScript-没有字段名称的猫鼬结构聚合输出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。