我正在使用Sail.js及其Waterline ORM创建一个简单的应用程序。在某种程度上,我遵循的是NoSQL的数据透视表模式的等效方法:每个用户都有一个他们预订的所有通道的数组subscriptions
。我正在尝试使用以下方法查找所有订阅了特定频道ID的用户:
User.find({subscriptions: {$in: [req.param('channel')]}}).done(function (err, users) {
/* ... */
});
并不是每个编写的代码中最漂亮的一行,但是它应该可以工作。问题是,事实并非如此。
users
是一个空数组,err
为空。他们查询实际执行的是,例如(使用Node Inspector):{ subscriptions: { '$in': [ '52fd1a033004de2d9bcb4980' ] } }
当使用同一查询通过umongo GUI“查找”用户时,它可以正常工作。但是,执行该功能时找不到用户。
有想法吗?谢谢!
最佳答案
您不需要$ in即可在数组中查找内容。一个简单的发现就可以解决问题:
db.users.find({subscriptions : '52fd1a033004de2d9bcb4980'})
将返回该频道的所有用户。
关于javascript - MongoDB发现$ in在sails.js中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21787060/