MongoDB C# driver - Abfrage einer Eigenschaft auf ein array von Filialdokumenten

Angenommen ich habe folgende Struktur der Dokumente in MongoDB.

{
    _id: ####,
    Ancestors: [
        { _id: 1, Name: "asdf" },
        { _id: 2, Name: "jkl;" },
        ...
    ]
}

Möchte ich finden Sie jedes Dokument enthält einen Ahnen, wo _id an die Ahnen, 2.

Kann ich diese Abfrage ausführen, die in der mongo-shell über diese: db.projects.find({"Ancestors._id": 2})

Kann ich auch ausführen dieser Abfrage mit der offiziellen C - # - Treiber mit diesem: Query.EQ("Ancestors._id", new BsonInt32(rootProjectId)).

Hier sind meine POCOs; die eigentlichen Klassen, die ich verwende haben mehr Eigenschaften als diese, aber ich wollte nicht zu überhäufen, die die Frage mit unnötigen details:

public class Project
{
    public int Id { get; set; }
    public List<ProjectRef> Ancestors { get; set; }
}

public class ProjectRef
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Meine Frage ist: Wie kann ich Schreibe eine stark typisierte Abfrage, die mit der C# - Treiber so, dass ich mich nicht übergeben "Vorfahren._id" als string? Ich möchte in der Lage sein, etwas zu tun, wie Query<Project>.EQ(p => p.Id, rootProjectId) so dass ich stattdessen ein Mitglied Ausdruck und lassen Sie die Klasse Zuordnungen sagen Sie dem Fahrer, dass Sie es verwenden sollten "Vorfahren._id".

InformationsquelleAutor Brian Oliver | 2013-09-12
Schreibe einen Kommentar