Mik*_*nen 2 mongodb mongodb-.net-driver
MongoDB 2.4增加了一个新的"更新后限制数组中的元素数量"功能.这是如何通过shell使用它:
db.students.update(
{ _id: 1 },
{ $push:
{ scores:
{ $each :
[
{ attempt: 3, score: 7 },
{ attempt: 4, score: 4 }
],
$sort: { score: 1 },
$slice: -3
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
如何使用MongoDB的C#-driver完成这项工作?
下面是一个示例测试,演示如何在不使用类型化类的情况下执行此操作:https://github.com/mongodb/mongo-csharp-driver/blob/master/MongoDB.DriverUnitTests/Builders/UpdateBuilderTests.cs#L492
您正在寻找的相关代码是:
var update = Update.PushEach(
"name",
new PushEachOptions { Slice = -3, Sort = SortBy.Descending("a") },
value1ToPush,
value2ToPush);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是类型化实体,我们也支持这一点:https: //github.com/mongodb/mongo-csharp-driver/blob/master/MongoDB.DriverUnitTests/Builders/UpdateBuilderTests.cs#L524
var update = Update<Test>.PushEach(
x => x.B,
args => args.SortDescending(x => x.C).Slice(-3),
new[] { new B { C = 0 }, new B { C = 1 } });
Run Code Online (Sandbox Code Playgroud)
最后,像.NET驱动程序中的其他所有内容一样,您始终可以构建一个看起来与上面的结构完全相同的BsonDocument并简单地执行它.
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |