在子文档中查找返回文档

时间:2013-10-26 10:37:31

标签: mongodb find

我有一个看起来像这样的集合:

{
  "colors": ["blue","white"],
  "items": {
    "old": {
      "name": "test"
    }
    "current": {
      "name": "new_test"
    }
  }
},
{
  "colors": ["red","green"],
  "items": {
    "old": {
      "name": "test2"
    }
    "current": {
      "name": "new_test2"
    }
  }
},

是否可以使用这样的查找:

db.collection.find({"items": { "old": { "name": "test" } } })

所以命令会返回:

{
  "colors": ["blue","white"],
  "items": {
    "old": {
      "name": "test"
    }
    "current": {
      "name": "new_test"
    }
  }
}

这可能吗?

1 个答案:

答案 0 :(得分:4)

是的,您可以使用“dot notation”进入对象:

db.collection.find({"items.old.name": "test" })

您使用的查询语法也有效,但它具有不同的语义:它将匹配整个子文档以获得相等而不仅仅是单个字段。例如,以下查询也会返回结果:

db.foo.find({"items.old": {"name" : "test"} }),

db.collection.find({"items": { "old": { "name": "test" } } })没有,因为items 包含current字段。