在其数组中查找具有值的对象

时间:2017-01-29 19:16:27

标签: mongodb-query lokijs

我正在使用lokijs,其中有" mongo-similar"查询语言。

devices.insert({key:'d1', name:'Device1', users:['u1'], status: 'OK', current_wl:'123'})
    devices.insert({key:'d2', name:'Device2', users:['u1','u1'], status: 'OK', current_wl:'123'})
    devices.insert({key:'d3', name:'Device3', users:['u2','u3'], status: 'OK', current_wl:'123'})
    devices.insert({key:'d4', name:'Device4', users:['u1','u2','u3','u4'], status: 'OK', current_wl:'123'})

我尝试查找具有用户' u1'在其数组中,用户返回emty list:

a= devices.find( {users:{ "$in" : ["u1"] }}  )
console.log("A", a);

如果问题是mongodb,查询是否正确? 还有另一种方法可以在mongo中完成吗? 在lokijs有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

我不确定lokijs,但这是Mongo中的正确查询。

如果您只是要查询其“users”数组中包含单个特定项目的文档,那么Mongo中针对此案例的更简单查询将是:

db.collection.find({ users: "u1" })

答案 1 :(得分:1)

我使用where找到了解决方案(或解决方法):

a= devices.where( function(obj){
      return obj.users.indexOf('u1') > -1;
   }
);