У меня есть два набора vmdetails и rsc_installtion_status, я хочу выбрать документы из rsc_installtion_status, у которых нет совпадающего имени хоста в vmdetails
Я использовал следующий запрос
db.rsc_installtion_status.aggregate([{$lookup:{ from: "vmdetails",let: {rschostname: "$hostname"},pipeline:[{$match:{$expr:{$ne :["$hostname","$$rschostname"]}}}],as: "rscInstall"}},{$unwind:"$rscInstall"},{$project:{"_id":0,"rscInstall":0}}])
количество записей в vmdetails
> db.vmdetails.find().count()
4
номер записи в
> db.rsc_installtion_status.find().count()
37
из 37 три документа совпадают с документами в vmdetails, поэтому я ожидаю, что результатом будет 34 документа, но в результате я получу 3 записи для каждого документа, т.е. 34X3
{ "hostname" : "string", "configdownload" : "string", "rscpkgdownload" : "string", "configextraction" : "string", "rscpkgextraction" : "string", "rscstartup" : "string", "installedversion" : "string", "_class" : "com.mastercard.rsc.domain.RscInstalltionStatus" }
{ "hostname" : "string", "configdownload" : "string", "rscpkgdownload" : "string", "configextraction" : "string", "rscpkgextraction" : "string", "rscstartup" : "string", "installedversion" : "string", "_class" : "com.mastercard.rsc.domain.RscInstalltionStatus" }
{ "hostname" : "string", "configdownload" : "string", "rscpkgdownload" : "string", "configextraction" : "string", "rscpkgextraction" : "string", "rscstartup" : "string", "installedversion" : "string", "_class" : "com.mastercard.rsc.domain.RscInstalltionStatus" }
но в $ match, если я использую $ eq вместо $ ne, результаты верны, выводятся только три записи. как выбрать записи, которые не совпадают с именем хоста