2017-06-27 4 views
0

Wir müssen die nächste Suche basierend auf Dokumenteigenschaften in MongoDB durchführen.Elastische/Nächste Suche basierend auf Dokumenteigenschaften in MongoDB

Nehmen wir ein Beispiel nehmen, ein Auto-Schema in MongoDB ist, werden Informationen als etwas gespeichert werden, die ähnlich:

{ 
    Make: "Hyundai", 
    Model: "Creta", 
    Title: "Hyundai Creta E 1.6 Petrol", 
    Description: "Compact SUV", 
    Feature: { 
    ABS: true, 
    EBD: true, 
    Speakers: 4, 
    Display: false 
    }, 
    Specification: { 
    Length: "4270 mm", 
    Width: "1780 mm", 
    Height: "1630 mm", 
    Wheelbase: "2590 mm", 
    Doors: 5, 
    Seating: 5, 
    Displacement: "1591 cc" 
    }, 
    Safety: { 
    Airbags: 2, 
    SeatBeltWarning: false 
    }, 
    Maintenance: { 
    LastService: "21/06/2016", 
    WashingDone: true 
    } 
} 

Suche muss auf der Grundlage folgender Kriterien zur Verfügung gestellt werden:

1. Make 
2. Model 
3. ABS 
4. Seating 
5. Displacement 
6. Airbags 

Jetzt sollten Ergebnisse Datensätze enthalten, in denen drei oder mehr der Eigenschaften übereinstimmen (exakte Übereinstimmung), und basierend auf der maximalen Anzahl der übereinstimmenden Eigenschaften sortiert werden.

Was ist der beste Weg, dies mit MongoDB zu implementieren?

+1

Was haben Sie bisher versucht? Bitte geben Sie eine [MCVE] an. –

Antwort

0

Sie könnten etwas zu erzeugen, Dokumente für jedes Triplett von Feldern, schreiben und sie dann mit $or, die Herstellung von so etwas wie

{$or: [ 
    {Make: "Hyundai", Model: "Creta", Feature.ABS: true}, 
    {Make: "Hyundai", Model: "Creta", Specification.Seating: 5}, 
    ... 
]} 

Sortierung wahrscheinlich sorting by textScore erfordert zusammen.