我正在使用 mongoose 对 MongoDB 执行 CRUD 操作。这就是我的架构的样子。
var EmployeeSchema = new Schema({
name: String,
description: {
type: String,
default: 'No description'
},
departments: []
});
每个员工可以属于多个部门。 Departments 数组将类似于 [1,2,3]。在这种情况下,departments.length = 3。如果员工不属于任何部门,则departments.length将等于0。
我需要找到 EmployeeSchema.departments.length > 0 的所有员工,并且如果查询返回超过 10 条记录,我只需要获取具有最大部门数的员工。
是否可以使用 Mongoose.find() 来获得所需的结果?
假设你的模型被称为Employee
:
Employee.find({ "departments.0": { "$exists": true } },function(err,docs) {
})
As $exists http://docs.mongodb.org/manual/reference/operator/query/exists/要求0
数组的索引,这意味着它里面有一些东西。
这同样适用于最大数量:
Employee.find({ "departments.9": { "$exists": true } },function(err,docs) {
})
因此数组中至少需要有 10 个条目才能匹配。
实际上,您应该记录数组的长度并更新$inc
每次添加一些东西。然后你可以这样做:
Employee.find({ "departmentsLength": { "$gt": 0 } },function(err,docs) {
})
在您存储的“departmentsLength”属性上。该属性可以被索引,这使得它更加高效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)