MongoDB 高级查询——使用另一个字段的值

标签 mongodb mapreduce aggregation-framework

我正在评估 MongoDB,我想看看它在查询方面的能力如何。

关于我的数据集,我可能需要使用一个字段的值来与另一个字段的值进行比较。最好的解释方式是举个例子。

在下面的 json 中,我想返回至少有一位年龄小于 30 岁且国家人口超过 1 亿的人的文档。:: p>

{
  people: [
    { name: "Feyyaz", age: 28, country: "Turkiye" },
    { name: "Joseph", age: 25, country: "USA" },
    ...
  ],
  countries: [
    { name: "Turkiye", population: 75000000 },
    { name: "USA", population: 300000000 },
    ...
  ]
}

注意:这个例子完全是我编的,因为我真实世界的例子要复杂得多。改变结构应该是最后的选择。

最佳答案

如果您可以使用 Python 来完成这项工作,那么您可以考虑使用查询语言 ObjectPath 这使您可以像这样在一行中完成工作:

$.people[@.age<30 and $.countries[@.name is @@.country].population > 100000000]

除了“@@”还没有实现——如果你想使用它,你可以在github页面上写一个功能请求

免责声明:计划在不久的将来将该语言与 MongoDB 集成,以便它可以利用 MongoDB 的分布式功能。

关于MongoDB 高级查询——使用另一个字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24821416/

相关文章:

c# - Mongo C# Driver 2.0 聚合组异常

mongodb - 如何在 MongoDB 中进行内部连接?

mongodb - mongodb日志中变量的含义

node.js - 如何在 forEach 循环中运行 Mongoose 查询

java - MapReduce IOException

mongodb - 如何对本地和外部数组字段进行 Mongodb $lookup

node.js - mongodb 中填充的替代方案?

mongodb - 我如何从 Meteor 中不同集合中的特定字段返回值?

azure - pipelinemapred waitoutputthreads 子进程失败,代码为 255

hadoop - hadoop CustomInputFormat不被调用