Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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聚合管道_Mongodb_Studio3t - Fatal编程技术网

MONGODB聚合管道

MONGODB聚合管道,mongodb,studio3t,Mongodb,Studio3t,具有下列文件: { "_id" : ObjectId("xxx"), "seller" : { "phone" : { "number" : "xx" }, "nickname" : "xx" }, "shipping" : { "id" :

具有下列文件:

{ 
"_id" : ObjectId("xxx"), 
"seller" : {
    "phone" : {
        "number" : "xx"
    }, 
    "nickname" : "xx"
}, 
"shipping" : {
    "id" : xx
}, 
"id" : yyy, 
"order_items" : {
    "item" : {
        "title" : "xxxyy"
    }, 
    "quantity" : 1
}}
我需要转换成这个输出

{ 
"_id" : ObjectId("xxx"), 
"seller.phone.number" : "xx",
"seller.nickname" : "xx", 
"shipping.id" : "xx",
"id" : yyy, 
"order_items.item.title" :"xxxyy",
"order_items.quantity" : 1
}
正如您所看到的,我需要做的是将文档展平到单个级别 我正在处理以下代码,但mi输出仍然嵌套

db.getCollection("collection").aggregate(
    [
        { 
            "$unwind" : { 
                "path" : "$order_items"
            }
        }, 
        { 
            "$project" : { 
                "seller.phone.number" : 1.0, 
                "seller.nickname" : 1.0, 
                "shipping.id" : 1.0, 
                "id" : 1.0, 
                "order_items.item.title" : 1.0, 
                "order_items.quantity" : 1.0
            }
        }
    ], 
    { 
        "allowDiskUse" : false
    }
);
我开始与mongodb和Studio3合作,如有任何帮助,将不胜感激 蒙戈人的问候:

否则,从MongoDB 3.6开始,服务器允许存储包含点(即…)和美元符号(即$)的字段名

因此,尽管Mongo v3.6+允许字段名包含点,但它们仍然提供以下警告:

在查询语言中添加支持之前,请使用$and。不建议使用字段内名称,官方MongoDB驱动程序也不支持字段内名称

所以studio3t有一个自定义的驱动程序,它们可以使用多种语言编写查询,但我相信它们只使用调整到查询语言的核心驱动程序

那么这意味着什么呢?这意味着驱动程序将
seller.phone.number
解析为嵌套对象

您可以在项目阶段更改字段名称:

{
    "$project" : {
        "seller_phone_number": "$seller.phone.number",
        "seller_nickname": "$seller.nickname",
        "id": 1,
        "shipping_id": "$shipping.id",
        "order_item_quantity": "$order_items.quantity",
        "order_item_title": "$order_items.item.title",
    }
}