【发布时间】:2019-07-22 14:04:07
【问题描述】:
我正在尝试查询嵌套在数组中的对象值并仅返回该值(连同它嵌套的整个对象)
我尝试了以下代码,但它返回了附属数组中的所有附属,而我只想要我搜索的那个:
// data structure :
{
_id: 1,
name: vendorName,
countryCode: US,
affiliates: [{
number: 1,
name: affName
},
{
number: 2,
name: affName
}
]
async function getDetails(user){
let vendorQuery = {
countryCode: user.countryCode,
affiliates: {
$elemMatch: {
number: user.affiliateNumber
}
}
}
let db = await mongoService.connect()
const collection = db.collection('vendors');
let vendorDetails = await collection.find( vendorQuery, {'affiliates.$':1} ).toArray()
console.log('brokerDetails : ',brokerDetails);
return vendorDetails
}
因此,在上面的代码中,我希望返回供应商对象,但仅限于匹配的附属公司,而不是全部
【问题讨论】:
-
您需要按照this answer 使用
.project()方法语法。喜欢 -let vendorDetails = await collection.find( vendorQuery).project({'affiliates.$':1}).toArray() -
谢谢,成功了!我不明白为什么 Docs id 中的语法不同。还是谢谢
标签: javascript node.js mongodb vue.js