架构如下(Mongoose Styling)
User:
tickets: [
_ticket:
type: mongoose.Schema.ObjectId
ref: 'Ticket'
used:
type: Boolean
default: false
]
我想找到至少有一张带有使用密钥的票证的用户是假的
WANT
{tickets: [{_ticket: ObjectId('...'), used: true}, {_ticket: ObjectId('...'), used: false}]}
WITHOUT
{tickets: [{_ticket: ObjectId('...'), used: true}, {_ticket: ObjectId('...'), used: true}]}
{tickets: []}
没有MapReduce有什么办法吗? 感谢您的阅读:)
答案 0 :(得分:1)
您不需要使用$elemMatch
,因为您只检查tickets
数组的单个字段:
db.users.find({'tickets.used': false})
答案 1 :(得分:0)
使用$ elemMatch查找文档
db.users.find({tickets: {$elemMatch: {used: false}}})
将匹配文档数组中的对象 used === false