1

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
    }
]
}
4

1 に答える 1