查看结果中的子节点数据 mongodb
View child node data in result with mongodb
我正在尝试查看 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
}
]
}
试试这个,您只需要匹配在投影之前存在 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" }
我正在尝试查看 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
}
]
}
试试这个,您只需要匹配在投影之前存在 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" }