2013-03-14 2 views
1

У меня есть следующая структура данных:Как запросить индексы в MongoDB используя C# драйвер

{ 
    eventname: "blah", 
    invitees: [ 
    { 
     inviteid: 1, 
     userid: 34234 
    }, 
    { 
     inviteid: 2, 
     userid: 5232 
    }] 
} 

Я собираюсь использовать ensureIndex на моей колонке приглашенных, поэтому я не придется искать через каждый документ, чтобы найти конкретные userid в колонке приглашенных. В основном он искал события, к которым был приглашен конкретный идентификатор пользователя. Мне предложили использовать этот db.events.find({"invitees.userid" : 34234}), чтобы запросить его, но как это сделать в C# с драйвером 10gen. метод .find принимает только объект Mongo Query.

ответ

1

Так, что я делаю это:

var collection = db.GetCollection<MyType>("collectionName"); 
var query = Query.EQ("fieldname", valueToQuery); 
var results = collection.Find(query); 
+1

После создания индекса на колонке вы можете просто запрос, как правило, и он делает все для вас? – anthonypliu

+1

Да. Вы можете использовать команду .explain(), чтобы проверить индекс, если он есть, который используется в запросе – sambomartin

+1

Это верно. Вам не нужно ничего делать, чтобы заставить его использовать индекс. Если вы не видите преимущества, ожидаемого от индекса, используя команду объяснения, как указано выше, будет показано, что индекс используется, если он используется. –

Смежные вопросы