MongoDB/Mongoose 基于多个子文档的查询

MongoDB/Mongoose query based on multiple subdocuments

我是 MongoDB 和 Mongoose 的新手。我目前正在构建一个应用程序,它有一个客户集合,其中包含客户拥有的一系列帐户。

我想根据客户拥有的帐户的具体情况查询集合。例如,我需要 return 客户端是:

下面是示例文档:

{
    clientDetails: {
        cardNumber: "0123456",
        firstName: "Bob",
        lastName: "Dole",
        clientType: "Standard"
    },
    accounts: [
        {
            accountNumber: "123",
            accountType: "FML",
            balance: 4000.00
        },
        {
            accountNumber: "234",
            accountType: "OMG",
            balance: 2000
        }
    ]
}

到目前为止,我只想出了如何构建一个查询来获取 clientType "Standard" 和 accountTypes ["FML","OMG] 的客户端,但我无法弄清楚如何指定特定帐户类型的余额条件。

ClientModel
    .find({
        "clientDetails.clientType": "Standard",
        "accounts.accountType": { $all ["FML", "OMG"]
    })
    .then(
        function(){ //etc..},
        function(err){ //etc...}
    );

您可以将 $all$elemMatch 一起使用。

ClientModel
    .find({
        "clientDetails.clientType": "Standard",
        "accounts": 
          { 
             $all: [
                     { "$elemMatch" : { accountType: "FML", balance: { $gt: 3000} } },
                     { "$elemMatch" : { accountType: "OMG", balance: { $lt: 3000} } } 
               ]
          }
    })
    .then(
        function(){ //etc..},
        function(err){ //etc...}
    );