【问题标题】:Mongodb find data from nested document [duplicate]Mongodb从嵌套文档中查找数据[重复]
【发布时间】:2018-02-18 14:30:15
【问题描述】:

我在集合“mycoll”中有这样的文档结构:

{
"orderid" : "123",
    "products" : {
        "1" : [ 
            {
                "pId" : "1",
               "name":"first prod"
            }
        ],
         "5" : [ 
            {
                "pId" : "5",
               "name":"fifth prod"
            }
        ]
    }
}

我想在 products.name 类似于“第五”的所有文档中查找 orderid。请帮我处理 mongo 查询?

【问题讨论】:

  • 我试过 db.getCollection('mycoll').find({'products.name':'fifth prod'}) ,只是想看看它是否与记录完全匹配,但这不是返回任何输出。
  • 你的结构有缺陷。您可能真的想存储为"products": [{ "pid": "1", "name": "first prod" },{ "pId": "5", "name": "fifth prod" }]。因此,您要么存储了错误的方式,要么不了解限制。不建议使用命名键更改路径,并且对数据库效率不高。改为使用易于查询的一致路径。

标签: java mongodb nested


【解决方案1】:

db.getCollection('mycoll').find({products: {$elemMatch: {name:'fifth prod'}}})

$elemMatch 允许您匹配同一数组元素中的多个组件。

此外,如果您想要 like 的行为,您可以继续并在正反斜杠内使用正则表达式/模式。 /.../

【讨论】:

  • 这对我不起作用。
  • @veena 是否可以按照 Neil 在上述 cmets 中的建议进行架构更改。上述查询失败的原因是在您的情况下键入的数组的路径访问方式不起作用。尝试将键作为数组元素字段的一部分。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 2018-03-09
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多