我创建并插入了一些简单的 json 文档,每个文档都有一个数组到 mongo:
MongoDB shell version: 2.4.6
use test
> db.sandbox.insert({ "array1" : [ "praxis a", "value b", "theory c"] })
> db.sandbox.insert({ "array1" : [ "mean d", "minimum e"] })
> db.sandbox.insert({ "array1" : [ "maximum f"] })
然后我在集合中搜索包含以字符串 'field1' 开头的 array1 值的文档
> db.sandbox.find({"array1" : /praxis/})
正如预期的那样,这返回了一个文档:
{ "_id" : ObjectId("52585223b8a783860470f07b"), "array1" : [ "praxis a", "value b", "theory c" ] }
但是,我真正想要的是只返回匹配的 array1 字段值。所以我尝试从数组中投影第一个匹配项:
> db.sandbox.find({"array1" : /praxis/}, {_id: 1, "array1.$": 1})
当我尝试这个时,我得到了一个奇怪的错误:
error: {
"$err" : "positional operator (array1.$) requires corresponding field in
query specifier",
"code" : 16352
}
我希望得到的是价值:
"field1: a"
我以为我正在解决的问题是取回数组:
{ "array1: [ "praxis a", "value b", "theory c"] }
我将不胜感激有关 find 函数的帮助以及如何使用 $ match 投影数组中的值...