我正在使用nodejs mongodb RESTful API。我有10个对象文档(电工可以完成的工作)具有相同的类别名称(电工)。我需要一次只在一个对象中获得该类别名称,但是当我查询时那么所有10个文档都只显示类别名称。我该如何只获取一个对象,而不是10个具有相同类别名称的对象。
类似下面给出的10个对象具有相同的类别名称。
{ "category": [ { "_id": "5b80393f7fca491488980fe1", "category_name": "electrical", "sub_category_name": "switches meters and fuses", "price": 300 }] }
但是当我查询时我得到
{"category": [ { "_id": "5b80393f7fca491488980fe1", "category_name": "electrical" },{ "_id": "5b80393f7fca491488980fe1", "category_name": "electrical" }] }
答案 0 :(得分:0)
如果我正确理解了您的预期输出,则可以使用aggregate
代替您的 find
做您想要的事情。
{ $match: { "category.category_name": 'electrical' }},
{ $unwind: '$category' }
$group
允许我们按 category_name 分组,并从每个组[3中的单个文档中组成一个数组:
{
$group: {
_id: { category_name: '$category.category_name' },
category: {
$push: {
_id: '$category._id',
sub_category_name: '$category.sub_category_name',
price: '$category.price'
}
}
}
}
{
$project: {
_id: 0,
category_name: '$_id.category_name',
category: '$category'
}
}