我在MongoDB
中有一个复杂的收藏集。在此,我想基于departments
查询subDeptName
数据。我在db.getCollection('users').find({"departments.subDeptName" : "Java"})
下面使用了查询,但是它获取部门的所有数组元素。我只想查询"subDeptName" : "Java"
所在的部门。我们该怎么做?
{
"firstName" : "John",
"lastName" : "Kerr",
"email" : "john.kerr@gmail.com",
"countryName" : "USA",
"usRestrictionSw" : "N",
"status" : "Active",
"effDate" : ISODate("2012-08-24T01:46:33.000Z"),
"departments" : [
{
"subDeptCd" : "AB",
"languageCd" : "en",
"desc" : "Development Group",
"subDeptName" : "Java",
"status" : "Active"
},
{
"subDivisionAlpha2Cd" : "KG",
"subDivisionCd" : "B",
"languageCd" : "ru",
"desc" : "Testing Group",
"subDeptName" : "Python",
"status" : "Active"
},
..........
..........
..........
..........
}
}
答案 0 :(得分:1)
db.getCollection('users').find({"departments.subDeptName" : "Java"})
将所有用户与子部门java匹配。
获得所需结果的最简单方法是:
db.getCollection('users').aggregate([
{
$unwind: "$departments"
},
{
$match: {
"departments.subDeptName" : "Java"
}
])
现在,您还可以添加$ project阶段以仅获取所需的特定字段。
答案 1 :(得分:-1)
尝试一下:-
db.getCollection('users').find({"departments.subDeptName" : "Java"})
我已经在命令行上检查了此工作正常。 请检查您的mongo版本和mongo shell版本
mongod --version(检查mongo版本)
mongo --version //检查mongo shell版本。
还要检查错误日志中是否还有其他问题。