const string Pattern = @"(?si)<([^\s<]*totalWork[^\s<]*)>.*?</\1>";
var filter = Builders<JobInfoRecord>.Filter.Regex(x => x.SerializedBackgroundJobInfo,
new BsonRegularExpression(Pattern, "i"));
var documents = await records.Find(filter).ToListAsync();
====Mongo tarafındaki belgeler nasıl güncellenir? Ben <code>documents</code> aldıktan sonra
yanımda her doküman ile çalışıyor.
const string EmptyTag = "<$1></$1>";
var updatedJobInfo = Regex.Replace(document.SerializedBackgroundJobInfo, Pattern, EmptyTag);
Mongo tarafında nasıl Regex.Replace
yapabilirim? Yoksa bu sadece müşteride olabilir mi?
Aşağıdaki Replace
Mongo tarafında çalışıyor mu?
using (var cursor = await jobInfoDocuments.FindAsync<JobInfoRecord>(filter))
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
foreach (var document in batch)
{
var newInfo = Regex.Replace(document.SerializedBackgroundJobInfo, regex, EmptyTag);
// Applying several operations within the one request.
operationList.Add(new UpdateOneModel<JobInfoRecord>(Builders<JobInfoRecord>.Filter.Eq("_id", document.JobId),
Builders<JobInfoRecord>.Update.Set("SerializedBackgroundJobInfo", newInfo)));
}
Ouch kabuk çalışmak için
filter
düzeltmekjavascript
ile bunu ancak emin olabiliriz! Açıkça, bu soruya, ödülün gönderilmesinden önce bir kopya olarak kapatılmış olmalıdır. Bkz. [MongoDB: Belgeleri aynı belgeden kullanarak güncelleme] (http://stackoverflow.com/a/3792958/2313887) Bu, kabul edilen yanıtta yeniden adlandırılan alanın küçük bir yapısını değil, "döngü" anlamına gelir. Burada yapmanız gereken tek pratik şudur: [Mongo'daki güncelleme işleminin performansı nasıl artırılır?] (Http://stackoverflow.com/a/36191579/5031275) –Regex.replace desteklenmiyor. MongoDB sunucu tarafı özel ihtiyaçlarınız varsa, istemci tarafında yapılmalıdır. – Saleem