Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NET如何从嵌入式阵列中删除项_.net_Mongodb_Mongodb .net Driver - Fatal编程技术网

.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集合中删除。