Mongodb C#复杂查询

时间:2018-01-03 19:03:52

标签: c# database mongodb mongodb-query .net-core

我是c#mongodb司机的新手。

我有一个包含以下结构的文档的集合。

{
  _id          : 5a424d61f5213516a0249323,
  email        : abc@gmail.com,
  applications : [
     {
        applicationId    : 5a3b54723629c20df8bcae8d,
        applicationStatus: "Open",
        type             : "Private",
        category         : "Tech"
     },
     {
        applicationId    : 5a3b54723629c20df8bcaeasd,
        applicationStatus: "Close",
        type             : "Public",
        category         : "Agri"
     },
     {
        applicationId    : 5a3b54723629c20df8bcajkl,
        applicationStatus: "Open",
        type             : "Public",
        category         : "Business"
     },
     {
        applicationId    : 5a3b54723629c20df8bca852,
        applicationStatus: "Close",
        type             : "Public",
        category         : "Agri"
     },
  ]
}

我想获取所有不包含“Tech”类别的应用程序的文档。 简单来说,我想要除“应用”类别“Tech”之外的所有文档。

我尝试过以下查询,

db.users.Find(Builders<UserModel>.Filter.And(
    Builders<UserModel>.Filter.ElemMatch(u => applications, a => a.category!= "Tech")
))

但它返回空白查询 有人可以教我如何为这类文件编写复杂的查询吗? 忽略我的查询,建议我完成这项工作的标准方法。

提前致谢。 :)

1 个答案:

答案 0 :(得分:2)

您可以尝试使用Not

db.users.Find(Builders<UserModel>.Filter.Not(Builders<UserModel>.Filter.ElemMatch(u => applications, a => a.category == "Tech")))