A continuación se muestra el código que estoy intentando pero no puedo obtener los resultados deseados. coincidencia en jobid y correo electrónico.
mongoConn.aggregate({ collectionName: Collection.jobactivity, data: [ { $unwind: '$jobs' }, { $match: { '$and': [{ 'jobs.jobid': candidateJobHistoryObj.jobid}, {'jobs.activity.email': candidateJobHistoryObj.candidateemail }] }}, { $project: ({ '_id': 0, 'jobs.activity.activityname': 1, 'jobs.activity.firstname': 1, 'jobs.activity.middlename': 1, 'jobs.activity.lastname': 1, 'jobs.activity.createddatetime': 1, 'jobs.activity.createdbyuserid': 1, 'jobs.activity.modifiedtime': 1, 'jobs.activity.modifiedbyuserid': 1 }) }, { $sort: { 'jobs.activity.createddatetime': -1 } } ], })Código Json presente en mongodb:
{ "_id" : ObjectId("61c9d42fc87b10aab2e6732a"), "accountid" : 122, "jobs" : [ { "jobid" : 12, "activity" : [ { "firstname" : "Vikas Yadav Bhai", "middlename" : null, "lastname" : "Yadav", "email" : "candidate1@abc.com", "activityname" : "inserted the data into candidate engagement workflow", "modifiedbyuserid" : 151, "modifiedtime" : ISODate("2015-12-01T05:30:00.000+05:30"), "createdbyuserid" : 151, "createddatetime" : ISODate("2015-08-12T00:00:00.000+05:30") }, { "firstname" : "Vikas Yadav Bhai", "middlename" : null, "lastname" : "Yadav", "email" : "candidate2@abc.com", "activityname" : "updated the job details", "modifiedbyuserid" : 151, "modifiedtime" : ISODate("2015-12-01T05:30:00.000+05:30"), "createdbyuserid" : 151, "createddatetime" : ISODate("2015-08-12T00:00:00.000+05:30") } ] } ] } Quiero hacer coincidir los documentos donde el correo electrónico es => candidate1@abc.com y jobid = 12
db.collection.find({ "jobs.activity.email": "candidate1@abc.com", "jobs.jobid": 12 })Consulte el documento oficial sobre la notación de puntos si desea obtener más detalles.
Aquí está el parque infantil de Mongo para su referencia.