2 回答

TA貢獻1921條經(jīng)驗 獲得超9個贊
更新中的美元符號的解釋方式與聚合框架中的方式不同。
作為解決方法,您可以使用$out運算符,它將用聚合管道的結果替換現(xiàn)有集合。
col.Aggregate() ???.AppendStage<BsonDocument>( ???????????????????????BsonDocument.Parse("{?$addFields:?{?\"Sids\":?[\"$Sid\"]?}}")) ???.Out("col");

TA貢獻1772條經(jīng)驗 獲得超5個贊
從 mongodb 服務器 v4.2 開始,您可以使用聚合管道階段引用文檔的現(xiàn)有字段。
如果有人感興趣,這里有一個使用 MongoDB.Entities 執(zhí)行相同操作的示例程序:
using MongoDB.Entities;
using System;
using System.Collections.Generic;
namespace StackOverflow
{
? ? public class Program
? ? {
? ? ? ? public class Member : Entity
? ? ? ? {
? ? ? ? ? ? public string Sid { get; set; }
? ? ? ? }
? ? ? ? private static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? new DB("test");
? ? ? ? ? ? var members = new List<Member>();
? ? ? ? ? ? for (int i = 1; i <= 10; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? members.Add(new Member
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Sid = Guid.NewGuid().ToString()
? ? ? ? ? ? ? ? });
? ? ? ? ? ? }
? ? ? ? ? ? members.Save();
? ? ? ? ? ? DB.Update<Member>()
? ? ? ? ? ? ? .Match(_ => true)
? ? ? ? ? ? ? .WithPipelineStage("{ '$set': { 'Sids': ['$Sid'] } }")
? ? ? ? ? ? ? .WithPipelineStage("{ '$unset': ['Sid'] }")
? ? ? ? ? ? ? .ExecutePipeline();
? ? ? ? }
? ? }
}
- 2 回答
- 0 關注
- 144 瀏覽
添加回答
舉報