1

我正在使用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'})

我尝试在其数组 users 中查找具有用户“u1”的设备返回 emty 列表:

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

如果问题出在 mongodb,查询是否正确?有没有另一种方法可以在mongo中做到这一点?在lokijs中还有另一种方法吗?

4

2 回答 2

1

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

如果您只想查询在其“用户”数组中包含单个特定项目的文档,那么在 Mongo 中对这种情况的更简单查询将是:

db.collection.find({ users: "u1" })
于 2017-01-30T08:57:41.140 回答
1

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

a= devices.where( function(obj){
      return obj.users.indexOf('u1') > -1;
   }
);
于 2017-01-30T09:02:52.663 回答