2013-11-21 1 views
-1

Я хотел бы найти строку в списке строк, которая существует в коллекции.Поиск строки в списке строк с помощью MongoDB

E.g. в моей коллекции "works"

tag: {"cute", "handsome", "modest"} 

Если я нахожу «милый» из поля поиска. Он будет искать, чтобы найти «милый» тег в теге списка строк.

Как я могу сделать это с помощью запросов mongodb?

+0

Можете ли вы предоставить действительный JSON вашего документа? –

+0

Это недопустимый хэш и недопустимый массив. У вас действительно есть документ с такой структурой? Я сомневаюсь в этом. –

+0

http://pastebin.com/YyN6JPzt это модель коллекции – user3008355

ответ

1

Если вы хотите, чтобы все работы, которые имеют «милый» тег, а затем использовать следующий запрос:

{ tag: "cute" } 

MongoDb поймет, что тег массив и проверить «милый», пункт существование. C# пример:

var works = db.GetCollection<WorkBase>("works"); 
var cuteWorks = works.Find(Query.EQ("tag", "cute")); 

Или вы можете использовать LINQ (MongoDB.Driver.Linq)

var cuteWorks = from w in works.AsQueryable() 
       where w.Tags.Contains("cute") 
       select w; 

BTW не забудьте правильно сопоставить свойства. Например. Свойство Tag должно быть указано правильное имя элемента:

[BsonElement("tag")] 
public List<string> Tag { get; set; } 

рассмотреть также переименовать свойство Tags, потому что у вас есть коллекция тегов, а не одного тега.

+0

симпатичный пример. Если пользователь набирает «красивый», я должен найти запись с ярлыком с именем «красивый». – user3008355

+1

@ user3008355 Вы знаете, как использовать переменные в C#? –