我有3个用户。我要选择所有一个。
结果数组只有一项。
$ elemMatch只返回一个项目,但是我想要除_id之外的所有项目。
我正在解决这个问题,但无法解决。
我的代码
const mongoose = require('mongoose') // v ^5.6.11
mongoose.connect('mongodb://localhost/test');
const UserSchema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
username: mongoose.Schema.Types.String,
password: mongoose.Schema.Types.String
})
const ProjectSchema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
users: {
type: [UserSchema]
}
})
const ProjectModel = new mongoose.model('projects', ProjectSchema)
const query = ProjectModel.find({
_id: '5d66ce383fc7e0263881bd39'
})
query.select({
users: {
$elemMatch: {
$ne: {
_id: '5d66ce383fc7e0263881bd3e'
}
}
}
})
query.exec((error, data) => {
if (error) {
console.log('ERROR', error)
} else {
console.log('DATA', data)
}
})
答案 0 :(得分:0)
您可以使用聚合来做到这一点。
第3步:再次使用$ ne运算符进行匹配。
db.getCollection('projects').aggregate([
{'$match':{id:'5d66ce383fc7e0263881bd39'}},
{
'$unwind':'$users'
},{
'$match':{'users.id':{$ne:'5d66ce383fc7e0263881bd3e'}}
}
]);