如何在查询中从Waterline 0.10.x中提取不同的值?

时间:2015-03-02 09:09:49

标签: mongodb distinct sails.js waterline

所以我在水线0.10.x中查找了 .distinct 函数,并且在查看Stack Overflow之后找不到它,我发现了这个......

How to extract distinct values from a mongo database using Waterline and Sails.js (version 0.10)?

ALMOST解决了我的问题。

所以我尝试查看本机mongodb文档,发现我可以这样做......

db.dogs.distinct('breed', { owner: ObjectId('123456') })

返回 ObjectId('123456')所具有的不同品种。

但这不起作用......

Dog.native(function (err, collection){ 
    collection.distinct('breed', { owner: '123456' }, function (err, breeds){
        console.log(breeds);
    });
});

这给了我一个空数组。

我认为问题在于,Waterline的 .native 函数无法理解何时将给定字符串转换为 ObjectId ,而且Waterline文档仍在 - 记录。

如何通过查询获取不同的值?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

sails-mongo v0.10.5介绍了结果中使用的函数。

可在此处看到:https://github.com/balderdashy/sails-mongo/pull/215

工作代码如下:

Dog.native(function (err, collection){
    collection.distinct('breed', {
        owner: Owner.mongo.objectId("123456")
    }, function (err, breeds){
        console.log(breeds);
    });
});

{samp-mongo 0.10.5中引入了Model.mongo.objectId函数。