【问题标题】:Find object with value in its array在其数组中查找具有值的对象
【发布时间】:2017-01-29 19:16:26
【问题描述】:

我正在使用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 中还有其他方法吗?

【问题讨论】:

    标签: mongodb-query lokijs


    【解决方案1】:

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

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

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

    【讨论】:

    • 不幸的是它在 lokijs 中不起作用 :-( 还是谢谢你。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 2021-12-06
      • 2019-11-14
      • 2014-05-07
      • 2020-02-11
      • 2019-02-26
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多