2

Мне нужно получить все имена пользователей из «followList.username» и сравнить с именами « », если какое-либо соответствие нужно добавить в массив.MongoDB .Net driver 2.0 Builders Фильтр (сравнение поля с массивом)

Person Model 
{ 
    "_id" : ObjectId("554f20f5c90d3c7ed42303e1"), 
    "username" : "fatihyildizhan", 
    "followingList" : [ 
     { 
      "_id" : ObjectId("55505b6ca515860cbcf7901d"), 
      "username" : "gumusluk", 
      "avatar" : "avatar.png" 
     }, 
     { 
      "_id" : ObjectId("58505b6ca515860cbcf7901d"), 
      "username" : "yalikavak", 
      "avatar" : "avatar.png" 
     }, 
     { 
      "_id" : ObjectId("58305b6ca515860cbcf7901d"), 
      "username" : "gumbet", 
      "avatar" : "avatar.png" 
     } 
    ] 
} 

Post Model 
{ 
    "_id" : ObjectId("554f2df2a388R4b425b89833"), 
    "username" : "yalikavak", 
    "category" : "Summer", 
    "text" : "blue voyage with yacht" 
}, 
{ 
    "_id" : ObjectId("554f2df2a388P4b425b89833"), 
    "username" : "yalikavak", 
    "category" : "Winter", 
    "text" : "is coming ..." 
}, 
{ 
    "_id" : ObjectId("554f2df2a388K4b425b89833"), 
    "username" : "gumbet", 
    "category" : "Fall", 
    "text" : "there are many trees" 
} 

Я пытаюсь получить блок кода результата, как показано ниже, но не мог понять это.

var filter = Builders<Post>.Filter.AnyEq("username", usernameList); 
var result = collection.Find(filter).ToListAsync().Result; 

Помогите мне с этим? Спасибо.

ответ

2

Логика переворачивается, что вам нужно, это $in query, если я понимаю ваш случай использования правильно:

var filter = Builders<Post>.Filter.In("username", usernameList); 
var result = collection.Find(filter).ToListAsync().Result; 

В вашем случае, username простое поле, и вы хотите, чтобы соответствовать против списка кандидатов. AnyEq используется для проверки того, что из встроенного списка сложных объектов по крайней мере один соответствует критерию. Это все еще переводит на простой запрос в MongoDB, но требует «охватить» объект, для которого требуется более сложный синтаксис.

+1

Yeap, вы поняли это правильно. «В» был правильный запрос фильтра, который я искал. Спасибо. – fatihyildizhan

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