Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用mongo查询修改或展开深嵌套数组_Mongodb_Aggregation Framework - Fatal编程技术网

Mongodb 使用mongo查询修改或展开深嵌套数组

Mongodb 使用mongo查询修改或展开深嵌套数组,mongodb,aggregation-framework,Mongodb,Aggregation Framework,在创建了自己的聚合管道之后,我得到了以下结果: [ { “_id”:“53712c7238b8d900008ef71c”, “地址”:[ { “_id”:“53712c7238b8d900008ef71b”, “电话号码”:“4092348294”, ... } ], “名称”:“TestDealer”, “车辆”:[ { “_id”:“53712fa138b8d900008ef720”, “createdAt”:“2014-05-12T20:08:00.000Z”, “标签”:[ “车辆” ]

在创建了自己的聚合管道之后,我得到了以下结果:

[
{
“_id”:“53712c7238b8d900008ef71c”,
“地址”:[
{
“_id”:“53712c7238b8d900008ef71b”,
“电话号码”:“4092348294”,
...
}
],
“名称”:“TestDealer”,
“车辆”:[
{
“_id”:“53712fa138b8d900008ef720”,
“createdAt”:“2014-05-12T20:08:00.000Z”,
“标签”:[
“车辆”
],
“选择”:[
{
“_id”:“53712fa138b8d900008ef71e”,
“hasSunroof”:错误,
...
}
],
“上市”:没错,
“披露”:[
{
“_id”:“53712fa138b8d900008ef71f”,
“水损害”:错误,
...
}
],
“详情”:[
{
“_id”:“53712fa138b8d900008ef71d”,
“年份”:2007年,
...
}
]
},
{
“_id”:“5373c6439058859af7904a17”,
“createdAt”:“2014-05-14T19:17:00.000Z”,
“标签”:[
“车辆”
],
“选择”:[
{
“_id”:“5373c6439058859af7904a15”,
“hasSunroof”:错误,
....
“其他”:[]
}
],
“上市”:没错,
“披露”:[
{
“_id”:“5373c6439058859af7904a16”,
“水损害”:错误,
...
}
],
“详情”:[
{
“_id”:“5373c6439058859af7904a14”,
“年份”:2013年,
...
}
]
}
]
}
]
如您所见,
车辆
是遵循特定模式的子文档(车辆)数组:

  • 详细信息:一组
    详细信息
    子文档
  • opts:一个
    opts
    子文档数组
  • 披露:一系列
    披露
    子文档
对于
详细信息
披露
选择
中的每一项,我希望返回数组中的第一个子文档,而不是数组。然而,我不知道从哪里开始。我真的无法释放车辆,因为它可能是空的

以下是我的最终数据:

[
{
“_id”:“53712c7238b8d900008ef71c”,
“地址”:[
{
“_id”:“53712c7238b8d900008ef71b”,
“电话号码”:“4092348294”,
...
}
],
“名称”:“TestDealer”,
“车辆”:[
{
“_id”:“53712fa138b8d900008ef720”,
“createdAt”:“2014-05-12T20:08:00.000Z”,
“标签”:[
“车辆”
],
“选择”:{
“_id”:“53712fa138b8d900008ef71e”,
“hasSunroof”:错误,
...
},
“上市”:没错,
“披露”:{
“_id”:“53712fa138b8d900008ef71f”,
“水损害”:错误,
...
},
“详情”:{
“_id”:“53712fa138b8d900008ef71d”,
“年份”:2007年,
...
}
},
{
“_id”:“5373c6439058859af7904a17”,
“createdAt”:“2014-05-14T19:17:00.000Z”,
“标签”:[
“车辆”
],
“选择”:{
“_id”:“5373c6439058859af7904a15”,
“hasSunroof”:错误,
....
“其他”:[]
},
“上市”:没错,
“披露”:{
“_id”:“5373c6439058859af7904a16”,
“水损害”:错误,
...
},
“详情”:{
“_id”:“5373c6439058859af7904a14”,
“年份”:2013年,
...
}
}
]
}
]
编辑:

以下是我为获取数据所做的聚合(在CoffeeScript中):

{
$match:
_id:ObjectId(参数id)
}
{
$unwind:“$Inventory”
}
{
$match:
“库存._id”:“活动”
}
{
$redact:
$cond:
如果:
$eq:['$listed',false]
然后:“$$PRUNE”
其他:“$$Descent”
}
{
$项目:
地址:1
名称:“$dealerName”
电子邮件:“$\u id.email”
车辆:“$inventory.vehicles”
}
以及原始数据:

{“\u id”:ObjectId(“53712c7238b8d900008ef71c”),
“电子邮件”:test@test.com",
“createdAt”:日期(1399925280000),
“密码”:“$2a$10$3dhicJuONkXeI9mQflXF0.JftAx7mLQaY2./6a3O7xdrs5qfH2zMW”,
“firstName”:“TestName”,
“lastName”:“testName”,
“DealName”:“TestDealer”,
“经销商类型”:“特许经销商”,
“emailIsVerified”:false,
“lastLoggedInAt”:日期(1400247300000),
“到期日期”:日期(4524062882000),
“deletedAt”:空,
“更新日期”:日期(140025150000),
“存货”:[
{“标题”:“活动目录”,
“_id”:“活动”,
“车辆”:[
{“_id”:ObjectId(“53712fa138b8d900008ef720”),
“createdAt”:日期(1399925280000),
“标签”:[
“车辆”],
“选择”:[
{“_id”:ObjectId(“53712fa138b8d900008ef71e”),
“hasSunroof”:错误,
“Hassnowtures”:错误,
“hasPowerWindows”:false,
“hasNavigationSystem”:错误,
“hasManuals”:错误,
“hasMags”:错,
“hasLeather”:假,
“haskeytry”:错误,
“hasHeatedSeats”:false,
“HasDVD系统”:错误,
“hasaircondition”:错误,
“has2SetsOfKeys”:false,
“其他”:[]}],
“上市”
opts:{$cond:{if:{$eq:[{$size:"$opts"},0]}, then:{$literal:[ "none" ]}, else:"$opts"}}