Ich habe die folgende DokumentstrukturErhalten abgestimmt Teilmenge und Anzahl der Teilmenge in mongodb
{
"_id" : ObjectId("578a14112acb483c1a0dce0a"),
"professionalInterests" : [
{
"_id" : ObjectId("578a063a0068ec0c1320a1de"),
"interestName" : "Finance and Accounting"
},
{
"_id" : ObjectId("578a063a0068ec0c1320a1e7"),
"interestName" : "Journalism and Mass Media"
},
{
"_id" : ObjectId("578a063a0068ec0c1320a1e5"),
"interestName" : "Manufacturing Industry"
}
],
"personalInterests" : [
{
"_id" : ObjectId("578a063a0068ec0c1320a1d2"),
"interestName" : "Music"
},
{
"_id" : ObjectId("578a063a0068ec0c1320a1d4"),
"interestName" : "Sports"
}
]
}
und ich habe einige Interessen Array wie
var professionalInterests = [
{
"interestName" : "Finance and Accounting"
}
];
var personalInterests = [
{
"interestName" : "Music"
}
];
ich alle Dokumente abrufen möchten aber sortiert nach matched " berufliche Interessen "und" berufliche Interessen "mit der übereinstimmenden Anzahl. Ich versuchte $setIntersection
, aber es funktioniert nicht für mich. Ich versuchte auch durch $unwind
, $project
, $size
, aber es ist keine effektive Lösung. Resultierte Dokument enthalten soll, aber die Sortierung hängt von dem angepassten Interesse (wie wenn mit „userA“ 2 Interessen abgestimmt und „userB“ 3 Interessen abgestimmt und dann „userB“ ist oben in der Liste dann „userA“.
{
professionalInterests : [],//user professional interests
personalInterests : [],//user personal interest
matchedProfessionalInterests : [],// contain the matched professional interest
matchedPersonalInterests : [],// contain the matched personal interest
matchedProfessionalInterestsCount : number,
matchedPersonalInterests : number
}
Können Sie ein Beispiel für Daten angeben, die Sie erhalten möchten? –
@AndriySimonov aktualisiert. –