我正在使用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/

10-09 20:55