2 回答
TA贡献1921条经验 获得超9个赞
更新中的美元符号的解释方式与聚合框架中的方式不同。
作为解决方法,您可以使用$out运算符,它将用聚合管道的结果替换现有集合。
col.Aggregate() .AppendStage<BsonDocument>( BsonDocument.Parse("{ $addFields: { \"Sids\": [\"$Sid\"] }}")) .Out("col");
TA贡献1772条经验 获得超5个赞
从 mongodb 服务器 v4.2 开始,您可以使用聚合管道阶段引用文档的现有字段。
如果有人感兴趣,这里有一个使用 MongoDB.Entities 执行相同操作的示例程序:
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 关注
- 103 浏览
添加回答
举报