Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Mongodb 嵌入式文档中的查询_Mongodb_Pymongo - Fatal编程技术网

Mongodb 嵌入式文档中的查询

Mongodb 嵌入式文档中的查询,mongodb,pymongo,Mongodb,Pymongo,我想做一个查询,在那里我可以找到所有银行,银行是banco1,投资不等于“box” 我该怎么做?我尝试了此查询,但不起作用: find({“投资”:{$elemMatch:{bank:'banco1',productName:{$ne:'box}}}) 这个查询是我尝试过的许多查询之一 谢谢 { “_id”:“5d3fc8c3914297c7b9a3a9e5”, “banco”:“banco 1”, “投资”:[{ “银行”:“银行1”, “风险”:“保护者”, “到期日”:“2021-10

我想做一个查询,在那里我可以找到所有银行,银行是banco1,投资不等于“box”

我该怎么做?我尝试了此查询,但不起作用:

find({“投资”:{$elemMatch:{bank:'banco1',productName:{$ne:'box}}})

这个查询是我尝试过的许多查询之一

谢谢


{
“_id”:“5d3fc8c3914297c7b9a3a9e5”,
“banco”:“banco 1”,
“投资”:[{
“银行”:“银行1”,
“风险”:“保护者”,
“到期日”:“2021-10-04”,
“税”:“1.02”,
“鉴别器”:“投资”,
“产品名称”:“LCI”
},
{
“银行”:“银行1”,
“风险”:“保护者”,
“到期日”:“2020-06-24”,
“税”:“0.75”,
“鉴别器”:“投资”,
“产品名称”:“Fundo DI”
},
{
“银行”:“银行1”,
“风险”:“保护者”,
“税”:“0.04”,
“鉴别器”:“投资”,
“id”:“259ad8ac-57b7-4d33-8e75-46CF5C28E3”,
“周年纪念”:“30”,
“产品名称”:“盒子”
}
}],
{
“_id”:“5d3fcb4c914297c7b9a3a9e6”,
“banco”:“banco2”,
“投资”:[{
“银行”:“banco2”,
“风险”:“保护者”,
“到期日”:“2020-06-24”,
“税”:“0.80”,
“鉴别器”:“投资”,
“id”:“73db503f-c780-448c-a6a8-05d2837ff6ff”,
“赎回日期”:“D+1”,
“产品名称”:“Fundo DI”
}
,
{
“银行”:“banco2”,
“风险”:“保护者”,
“到期日”:“2020-12-17”,
“税”:“0.98”,
“鉴别器”:“投资”,
“id”:“54e01515-dc7f-470f-8f00-8603c8f00686”,
“产品名称”:“LCA”
},
{
“银行”:“banco2”,
“风险”:“保护者”,
“到期日”:“2021-08-05”,
“税”:“1.0”,
“鉴别器”:“投资”,
“id”:“259ad8ac-57b7-4d33-8e75-46CF5C28E2”,
“产品名称”:“CDB”
}
}]
欢迎来到苏銮

我发现这给了我find中所有可用的功能,以及更多的功能。因此,大约95%的时候,除非我做一个快速查询,否则我最终会去聚合

以下汇总将为您提供所需信息:

db.getCollection('Test').aggregate([
    { $unwind: "$investimentos"},
    { $match: {
        'investimentos.bank': "banco1",
        'investimentos.productName': /^(?!box$)/
    }},
])
管道接收InvestmentOS中嵌入的文档数组,并创建一个新文档,为InvestmentOS中的每个元素保留父字段(_id和banco)。您可以尝试使用
db.getCollection('Test').aggregate([{$unwind:$investmentos”}])
直观地查看发生了什么

管道与find方法的作用相同——您给它一个要应用的过滤器列表。第二个元素使用正则表达式(由“/”字符包围)指定它应该查找所有不以“box”开头的内容。

欢迎使用SO Luan

我发现这给了我find中所有可用的功能,以及更多的功能。因此,大约95%的时候,除非我做一个快速查询,否则我最终会去聚合

以下汇总将为您提供所需信息:

db.getCollection('Test').aggregate([
    { $unwind: "$investimentos"},
    { $match: {
        'investimentos.bank': "banco1",
        'investimentos.productName': /^(?!box$)/
    }},
])
管道接收InvestmentOS中嵌入的文档数组,并创建一个新文档,为InvestmentOS中的每个元素保留父字段(_id和banco)。您可以尝试使用
db.getCollection('Test').aggregate([{$unwind:$investmentos”}])
直观地查看发生了什么


管道执行与find方法相同的操作-您给它一个要应用的过滤器列表。第二个元素使用正则表达式(由“/”字符包围)指定它应该查找所有不以“box”开头的内容“

如果需要将这些单独的文档重新组合到原始分组中,则在聚合中的$match管道之后添加$group管道:
{$group:{{u id:'$\u id',banco:{$first:'$banco'},investmentos:{$push:'$investmentos'}”
如果您需要将这些单独的文档重新组合到其原始分组中,那么在聚合中的$match管道之后添加$group管道:
{$group:{{u id:'$\u id',banco:{$first:'$banco'},investmentos:{$push:'$investmentos'}}
您有机会尝试建议的解决方案吗?你得到你需要的答案了吗?如果是,请标记答案或提供建议反馈,以便在需要时提供更多信息。您是否有机会尝试建议的解决方案?你得到你需要的答案了吗?如果是,请标记答案或提供对提案的反馈,以便在需要时提供更多信息。