我有以下数据库:
{
"a": [{
"name": "foo",
"thing": [{
"name": "bar",
"lyrics": ["1", "2", "3"]
}]
}, {
"name": "abc",
"thing": [{
"name": "123",
"list": ["one", "two"]
}]
}]
}
我似乎无法正确查询它。这两个查询返回相同的内容,即整个数据库:
db.test.find({“ a.name”:“ abc”})
db.test.find({“ a.name”:“ foo”})
如何找到一个集合而不是整个数据库?
我希望第一个查询返回:
{
"name": "abc",
"thing": [{
"name": "123",
"list": ["one", "two"]
}]
}
答案 0 :(得分:2)
这两个查询返回相同的文档,因为两个查询都匹配它。
这是一个文件
[{
"a": [{
"name": "foo",
"thing": [{
"name": "bar",
"lyrics": ["1", "2", "3"]
}]
}, {
"name": "abc",
"thing": [{
"name": "123",
"list": ["one", "two"]
}]
}]
}]
这是两个文件
[{
"a": [{
"name": "foo",
"thing": [{
"name": "bar",
"lyrics": ["1", "2", "3"]
}]
}]
},
{
"a": [{
"name": "abc",
"thing": [{
"name": "123",
"list": ["one", "two"]
}]
}]
}]
您可以像这样获取集合的统计信息
db.test.stats()
"count"
会告诉您那里有多少文件。
编辑:为此,在集合“测试”中,文档具有1个字段,即“ a”,其类型为可容纳对象(文档)的数组。它有2个数组元素
第一
{
"name": "foo",
"thing": [{
"name": "bar",
"lyrics": ["1", "2", "3"]
}]
}
第二
{
"name": "abc",
"thing": [{
"name": "123",
"list": ["one", "two"]
}]
}
答案 1 :(得分:1)
花括号{..}
中的所有内容,包括花括号本身,都是一个单独的文档,即整个数据库仅包含一个您为任何匹配查询收到的文档。为了获得理想的结果,您必须将您的JSON文档重新编写为方括号[..]
中的文档数组。