Mongodb $ size条件查找

时间:2014-01-13 11:29:40

标签: mongodb

架构如下(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有什么办法吗? 感谢您的阅读:)

2 个答案:

答案 0 :(得分:1)

您不需要使用$elemMatch,因为您只检查tickets数组的单个字段:

db.users.find({'tickets.used': false})

答案 1 :(得分:0)

使用$ elemMatch查找文档

db.users.find({tickets: {$elemMatch: {used: false}}})

将匹配文档数组中的对象 used === false