Node.js 如何获取与用户列表id相关的资产
我有以下结果,我想根据我的要求获取记录。 我有用户Node.js 如何获取与用户列表id相关的资产,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我有以下结果,我想根据我的要求获取记录。 我有用户id,我只想要那些符合user\u listid的资产记录,但它会显示所有与活动相关的资产记录,我只想要基于user\u list[id]的记录,请帮助我,谢谢 示例:假设我有5a226aa9c5941e2f845667c3用户id我只想要与此id相关的资产 export function getCampaigns(req, res) { return Campaign.find({"assets.users_list": req.par
id
,我只想要那些符合user\u list
id的资产记录,但它会显示所有与活动相关的资产记录,我只想要基于user\u list[id]
的记录,请帮助我,谢谢
示例:假设我有5a226aa9c5941e2f845667c3用户id
我只想要与此id相关的资产
export function getCampaigns(req, res) {
return Campaign.find({"assets.users_list": req.params.riderid ,status: 'Executed'}).exec()
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
}
{
"_id" : ObjectId("5b49d08db8695590d4ea7204"),
"company_id" : ObjectId("59e07c60bdd6d7a454a89304"),
"brand_id" : ObjectId("59e090a8bdd6d7a454a89305"),
"campaign_name" : "testing campaign 1",
"no_of_days" : "7",
"status" : "Executed",
"updated_date" : ISODate("2018-07-14T10:29:33.164Z"),
"created_date" : ISODate("2018-07-14T10:29:33.164Z"),
"active" : true,
"assets" : [
{
"_id" : ObjectId("5b49cef1b8695590d4ea7203"),
"brand_id" : ObjectId("59e090a8bdd6d7a454a89305"),
"medium" : "Billboard",
"quantity" : "1",
"image" : "1531563759445.JPG",
"__v" : 0,
"assets_planned_end_date" : ISODate("2018-07-14T10:30:13.000Z"),
"assets_planned_start_date" : ISODate("2018-07-14T10:30:13.000Z"),
"users_list" : [
ObjectId("5a226aa9c5941e2f845667c3")
],
"outdoor_tracking" : []
},
{
"_id" : ObjectId("5b49cef1b8695590d4ea7203"),
"brand_id" : ObjectId("59e090a8bdd6d7a454a89305"),
"medium" : "Billboard 2",
"quantity" : "5",
"image" : "1531562115.JPG",
"__v" : 0,
"assets_planned_end_date" : ISODate("2018-07-14T10:30:13.000Z"),
"assets_planned_start_date" : ISODate("2018-07-14T10:30:13.000Z"),
"users_list" : [
ObjectId("5a1d0c63ea1c673058e88d2c")
],
"outdoor_tracking" : []
},
],
"__v" : 1
}
我只希望活动记录和资产记录那些具有相关用户列表ID的资产
您在查询中只定义了条件,而不是投影。您必须只投影所需的数组元素。不知道mongoose的确切语法,但请翻译此查询:
db['01'].find(
{"assets.users_list":ObjectId("5a226aa9c5941e2f845667c3")}, // <= query part
{assets:{$elemMatch:{users_list:ObjectId("5a226aa9c5941e2f845667c3")}},
campaign_name:1,company_id:1} //<= projection part
)
它不显示。。以上数据…campaign name campaign id brand id感谢您的回答,但我希望alos campaign name campaign id使用投影有一个缺点,即仅包含(除了_id),因此如果需要在阵列上投影,则必须手动添加每个字段。例如,编辑我的答案
{
"_id" : ObjectId("5b49d08db8695590d4ea7204"),
"company_id" : ObjectId("59e07c60bdd6d7a454a89304"),
"campaign_name" : "testing campaign 1",
"assets" : [
{
"_id" : ObjectId("5b49cef1b8695590d4ea7203"),
"brand_id" : ObjectId("59e090a8bdd6d7a454a89305"),
"medium" : "Billboard",
"quantity" : "1",
"image" : "1531563759445.JPG",
"__v" : 0,
"assets_planned_end_date" : ISODate("2018-07-14T12:30:13.000+0200"),
"assets_planned_start_date" : ISODate("2018-07-14T12:30:13.000+0200"),
"users_list" : [
ObjectId("5a226aa9c5941e2f845667c3")
],
"outdoor_tracking" : [
]
}
]
}