【问题标题】:View child node data in result with mongodb使用 mongodb 查看结果中的子节点数据
【发布时间】:2016-11-29 17:01:14
【问题描述】:

我正在尝试在 mongodb 中查看子节点数据

我在mongodb中写的查询是-

db.users.aggregate({$unwind: '$social'} ,  
{ $project : { name: '$name' ,fb: '$social.facebook'  }  } );

我只想查看姓名和 facebook 字段

但是它将数据显示为 -

 /* 1 */
{
"_id" : ObjectId("583d94b42a7b4dfc334d1ab7"),
"name" : "Person Name",
"fb" : "www.fb.com/maria.mongodb"
}

/* 2 */
{
"_id" : ObjectId("583d94b42a7b4dfc334d1ab7"),
"name" : "Person Name"
}

/* 3 */
{
"_id" : ObjectId("583da2a52a7b4dfc334d1ab8"),
"name" : "Some Name",
"fb" : "www.fb.com/some.name"
}

/* 4 */
{
"_id" : ObjectId("583da2a52a7b4dfc334d1ab8"),
"name" : "Some Name"
}

如您所见,2 和 4 数据中的数据没有 fb 字段。

我拥有的原始数据是 -

/* 1 */
{
"_id" : ObjectId("583d94b42a7b4dfc334d1ab7"),
"name" : "Person Name",
"social" : [ 
    {
        "facebook" : "www.fb.com/maria.mongodb",
        "privacy" : true
    }, 
    {
        "twitter" : "www.tw.com/mongodb",
        "privacy" : false
    }
],
"personal" : [ 
    {
        "cell_no" : "+1-99082198414",
        "privacy" : true
    }, 
    {
        "email" : "maria@mongodb.com",
        "privacy" : false
    }
]
 }

 /* 2 */
 {
"_id" : ObjectId("583da2a52a7b4dfc334d1ab8"),
"name" : "Some Name",
"social" : [ 
    {
        "facebook" : "www.fb.com/some.name",
        "privacy" : true
    }, 
    {
        "twitter" : "www.tw.com/mongodb",
        "privacy" : false
    }
]
}

【问题讨论】:

    标签: mongodb mongodb-query projection nosql-aggregation


    【解决方案1】:

    试试这个,您只需要匹配在投影之前存在 social.facebook 的文档。

    db.users.aggregate([
        { $unwind: '$social' },
        { $match: { 'social.facebook': { $exists: true } } },
        { $project : { _id: 0, name: '$name', fb: '$social.facebook'  } }
    ]);
    

    结果如下:

    { "name" : "Person Name", "fb" : "www.fb.com/maria.mongodb" }
    { "name" : "Some Name", "fb" : "www.fb.com/some.name" }
    

    【讨论】:

    • _id:0 用于隐藏 ids
    • 是的,不知道你也想要那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 2021-05-18
    相关资源
    最近更新 更多