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" : [

            ]
        }
    ]
}