查询中的Mongo $可以在mongo中使用,但不能在sails中使用

时间:2014-01-11 21:45:15

标签: node.js mongodb sails.js

基本上查询在mongo中工作,但在sails控制器中不起作用:

    db.membermodel.find({identifier:{$in:["2","3","4"]}); // works

    MemberModel.find({
        identifier:{$in:["2","3","4"]},
    }).then(function(members){
        // doesn't work
    });

返回的数据:

    { "_id" : ObjectId("52d1a484f2b5e88cb5d4072c"), "identifier" : "2", "deviceToken" : "token2"}
    { "_id" : ObjectId("52d1a487f2b5e88cb5d4072d"), "identifier" : "3", "deviceToken" : "token3"}

谢谢, 火星

2 个答案:

答案 0 :(得分:1)

这不是使用Waterline进行in查询的方法。您只需将要选择的属性设置为数组值:

MemberModel.find({
    identifier:["2","3","4"]
}).exec(function(err, members){
    ...
});

如果您确实需要使用低级Mongo功能,可以使用

获取本机集合的实例
MemberModel.native(function(err, collection) {
   //do native mongo driver stuff with collection
}

答案 1 :(得分:0)

很难理解模型是如何被查询的,但我建议你“窥探”Mongo获取的MVC框架查询,因为这不是对Mongo的直接查询,而是通过框架传递。 我很确定你还在开发中,所以你可以访问你的mongo实例,使用完整的配置文件重新启动它(诀窍是在1ms内一切都很慢)

mongod --profile = 1 --slowms = 1&

关闭通常在

中的结果日志

/var/log/mongodb/mongodb.log

使用命令

tail -f /var/log/mongodb/mongodb.log

再次发送您的查询并检查MongoDb正在执行的内容。

相关问题