Mongo DB c# 查询嵌套数组中所有元素的 属性

Mongo DB c# query ALL element's property in nested array

我正在尝试获取具有特定条件的过滤器,以获取具有内部文档数组且具有 属性:

的文档
public class MyObject {
    public List<InnerObject> InnerObjects {get;set;}
}

public class InnerObject {
    public bool Accepted {get;set;}
}

现在我想查询所有 MyObjectsALL 内部对象 Accepted 设置为特定值,在这种情况下为 FALSE。我构建了过滤器:

filter = Builders<MyObject>.Filter.ElemMatch(
                                c => c.InnerObjects,
                                Builders<InnerObject>.Filter.Eq(c => c.Accepted, false));

这不起作用,因为它也将 return MyObjects 的任何 InnerObject 实例也设置为 true,我可以理解。问题是我找不到任何操作员可以实现我想要实现的目标。请注意,我还想有一个过滤器,其中至少有一个 InnerObject 接受特定值(实际上上面的过滤器会实现这一点),所以我唯一的问题是让对象 ALL InnerObject.Accepted 的实例设置为 TRUEFALSE.

如何实现?

您需要执行相反的操作才能实现。请将查询翻译成 C# 语法。

db.collection.find({
  "InnerObject.Accepted": {
    $not: {
      $eq: true
    }
  }
})

游乐场:https://mongoplayground.net/p/SgEpt96uxdb

遵循 C# 语法(请遵循最佳实践和良好的 OO 原则)

        var notAccepted = Builders<InnerObject>.Filter.Not(
            Builders<InnerObject>.Filter.Eq(u => u.Accepted, false)
        );
        
        IMongoCollection<MyObject> myobjectsCollection = null;
        myobjectsCollection.Find(Builders<MyObject>.Filter.ElemMatch(x => x.InnerObjects, notAccepted));