mongodb - 如何在 MongoDB 中查询字典数组?

标签 mongodb nosql pymongo

我有一组字典,我必须对其进行查询。查询将类似于“name”为“a”时“value”应为“2”。

{
    "t": "m",
    "y": "n",
    "A":[ 
            {
             "name": "x",
             "value": "1"
            },
            {
             "name": "y",
             "value": "2"
            },
            {
             "name": "z",
             "value": "1"
            }
        ]
}

在上面,我想知道当“name”为x时,“value”为“1”的记录是什么。 我还需要进行查询,例如,“name”是“x”,那么 value 应该是“2”,“name”是“y”,那么“value”应该是“1”

最佳答案

你必须使用 $elemMatch如果要查询嵌入文档的多个字段,则查询数组中的嵌入文档。所以你的查询应该是这样的:

db.collection.find( {
  "A": { $elemMatch: { name: "x", value: "1" } }
})

如果您想要查询具有(name:"x", value:"1") (name:"y", value: "2") 在同一查询中,您可以像这样将 $or 与 elemMatch 一起使用:

db.collection.find( {
  $or: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})

如果您想要查询具有(name:"x", value:"1") (name:"y", value: "2") 在同一查询中,您可以像这样将 $and 与 elemMatch 一起使用:

db.collection.find( {
  $and: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})

关于mongodb - 如何在 MongoDB 中查询字典数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418832/

相关文章:

node.js - Mongoose Populate 无法让它工作?

Mongodb 每两小时聚合一次

node.js - NodeJS 与 MongoDB - 将项目推送到 Github

views - CouchDB View 复制

amazon-web-services - AWS DynamoDB 表设计 : Store two UserIDs and Details in Table

python - Pymongo如何更新数组中行的特定值

python - 如何在Flask中使用SubmitField的onclick函数(WTF SubmitField问题)

Mongodb 数组串联

mongodb - 使 $elemMatch (projection) 返回所有符合条件的对象

SQL NOSQL 混合可能与否?