Как я могу преобразовать этот скрипт Mongo Shell в MongoDB C# Driver?MongoDB aggregation Shell script to MongoC# Драйвер
var myItems = []
var myCursor = db.Tickets.aggregate(
[
{ $match : { TicketProjectID : 49 } },
{ $project: { TicketProjectID:1, TicketID:1, concatValue: { $concat: [ "$Status", " - ", "$Name" ] } } }
// I will have a list of fields that I need to concatenate at run time. So C# query should support concatenation for "N" number of fields at run-time.
//{ $group: { _id: null, count: { $sum: 1 } } }
],
{ allowDiskUse: true }
)
//This seems like a ugly performance approach when we are working against 100k results with above match
while (myCursor.hasNext()) {
var item = myCursor.next();
if(item.concatValue.search(/mysearchkey/i) > -1)
{
myItems.push(item.TicketID)
}
}
myItems
или есть лучший способ сделать строку поиска в каскадной проекции вместо Еогеасп в курсоре, так как некоторые п.л. может получить 50k записи.
Это то, что я пытался до сих пор, (не используя Aggregation)
Примечание: подстриженные этот код номера для общественности Q & сайтов A. Поэтому, пожалуйста, рассмотреть это как псевдо-код
var tickets = ticketsCollection.FindSync(filter).ToList();
string concatinatedValue = string.Empty;
foreach (var ticket in tickets)
{
foreach (var field in customFieldsForThisProject)
concatinatedValue += ticket[field.Replace(" ", "_")];
if(concatinatedValue.StripHtml().contains("MysearchWord"))
{
TikectIdList.Add(ticket["TicketID"])
}
}
@KDecker обновленный вопрос с тем, что я пробовал. Я не пытался использовать Aggregation с C# Driver. – HaBo