.net NET如何从嵌入式阵列中删除项
考虑到藏品.net NET如何从嵌入式阵列中删除项,.net,mongodb,mongodb-.net-driver,.net,Mongodb,Mongodb .net Driver,考虑到藏品 { "_id" : 137, "name" : "Tamika Schildgen", "scores" : [ { "type" : "exam", "score" : 4.433956226109692 }, { "type" : "homework", "score" : 65.50313785402548
{
"_id" : 137,
"name" : "Tamika Schildgen",
"scores" : [
{
"type" : "exam",
"score" : 4.433956226109692
},
{
"type" : "homework",
"score" : 65.50313785402548
},
{
"type" : "homework",
"score" : 89.5950384993947
}
]
};
如何从集合中嵌入的分数数组中删除最低值为score.type=“homeowrk”的分数?已尝试使用以下代码,但运气不佳,无法找到出错的地方
var col = db.GetCollection<BsonDocument>("students");
var pipeline = new BsonDocument[] {
new BsonDocument{{"$unwind", "$scores"}},
new BsonDocument{ {"$match",new BsonDocument { {
"scores.type", "homework" } } } },
new BsonDocument{{"$group", new BsonDocument{
{"_id", "$_id"},
{"lowscore",new BsonDocument{
{"$min","$scores.score"}}
}}
}}
};
var result = await col.Aggregate<BsonDocument>(pipeline).ToListAsync();
var col=db.GetCollection(“学生”);
var管道=新的BsonDocument[]{
新的BsonDocument{{“$unwind”,“$scores”},
新的BsonDocument{{“$match”,新的BsonDocument{
“分数.类型”,“作业”}},
新的BsonDocument{{“$group”,新的BsonDocument{
{“\u id”,“$\u id”},
{“低分”,新的B文件{
{“$min”,“$scores.scores”}
}}
}}
};
var result=await col.Aggregate(pipeline.ToListAsync();
在这里,我得到了正确的结果,类型作业的分数很低,但下面的更新并没有从集合中删除项目,我无法理解
foreach (var doc in result)
{
var filterS = new BsonDocument("_id", doc.GetElement("_id").Value.ToInt32());
var update = Builders<BsonDocument>.Update.PullFilter("scores",
Builders<BsonDocument>.Filter.Eq("scores.score", doc.GetElement("lowscore").Value.ToDecimal128()));
var mresult = col.FindOneAndUpdateAsync(filterS, update).Result;
Console.WriteLine(mresult);
}
foreach(结果中的var单据)
{
var filterS=newbsondocument(“\u id”,doc.GetElement(“\u id”).Value.ToInt32();
var update=Builders.update.PullFilter(“分数”,
Builders.Filter.Eq(“scores.score”,doc.GetElement(“lowscore”).Value.ToDecimal128());
var mresult=col.FindOneAndUpdateAsync(过滤器,更新).Result;
控制台写入线(mresult);
}
已尝试,但未更新任何内容。我使用相同的查询返回“家庭作业”类型的所有分数,其中分数最低,但无法从数组中删除该项。聚合([{$unwind:$scores},{$match:{“scores.type”:“家庭作业”},{$sort:{“scores.scores”:1}}]).pretty();我通过使用for-each循环和dic解决了这个问题。Dictionary dic=新字典();将得分最低的项目添加到此目录中,并为每个目录添加另一个项目,以循环使用目录并从mongodb集合中删除。