2016-04-02 18 views
1

I Dokument wie dieses:Wie abfragen MongoDB-Array mit # mit c

{ 
    "_id" : ObjectId("56ff6d54f07a36271465441c"), 
    "Author" : "John", 
    "Content" : "Thera are alot of databases", 
    "CreatedAtUtc" : ISODate("2016-04-02T06:57:24.542Z"), 
    "Tags" : [ 
     "elasticSearch", 
     "MongoDb", 
     "C#" 
    ], 
    "Title" : "Best DB" 
} 

Ich mag alle Dokumente finden, die Tag haben: "MongoDB"

Ich habe versucht:

var filter = Builders<Post>.Filter.In("Tags", "MongoDb"); 
var posts = collection.Find(filter).ToList(); 

Wo Post ist eine C# -Klasse

Aber ich bekomme keine Dokumente. Irgendeine Idee?

Antwort

1

Wenn für Dokumente abfragen, wo es eine Gleichheit Spiel von "MongoDB" auf der Tags Array, verwenden Sie einfach die Abfrage Dokument { "Tags": "MongoDb" }:

Mongo Shell

db.collection.find({ "Tags": "MongoDb" }) 

C#

Verwenden Sie die Methode Eq, um af zu implementieren ilter Dokument, das ein Gleichheitsbedingung angibt:

var filter = Builders<Post>.Filter.Eq("Tags", "MongoDb"); 
var posts = collection.Find(filter).ToList(); 
+0

Dies löst eigentlich '{„Variablen“: [„MongoDB“]}', die nicht nur nicht in der Liste auf ein beliebiges Element passt, aber auch nicht überein "Liste", die nicht "Soley" enthält die Eigenschaft "MongoDB". Ich glaube nicht, dass du die Antwort wirklich kennst und gerade einen Beitrag gefunden hast, von dem du dachtest, du würdest ihn kopieren. –

+1

Danke chridam, es ist wirklich zu einfach !. – Khorshid