Mongodb - 匹配具有未知键的嵌套文档

Sti*_*ube 8 mongodb

在一个集合中,我存储了一些数据,映射到在其他地方生成的移动设备 UID。例如:

{
    devices: {
        'b2e4fe52d4ab57fd55fa': { model: 'aPhone', number: 1111111 },
        'b2e4fe52d4ab57fd55fb': { model: 'bPhone', number: 2222222 },
        'b2e4fe52d4ab57fd55fc': { model: 'cPhone', number: 3333333 }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用 UID 的情况下检索代表一个设备的对象?

对于仅在模型或数字上使用 $elemMatch 的数组来说,这很容易,但似乎它的使用仅限于数组,文档是否有模拟运算符?

anh*_*hlc -1

使用$where,但如果由于性能原因您有大量数据,则不建议使用 $where。

db.collection.find(
{ $where: function() {
  var input = { model: 'aPhone', number: 1111111 };  
  if(this.devices != undefined){  
  for(var key in this.devices){
    d = this.devices[key];
    if (d.model==input.model && d.number==input.number) return true;
    }
  }
  return false;
}})
Run Code Online (Sandbox Code Playgroud)