Dav*_*Sag 2 distinct mongodb sails.js waterline sails-mongo
使用Sails.js版本0.10.x,假设我有一个模型Dog,填充如下(yaml为方便起见,以格式写出,但在我的情况下,它实际上是在mongo数据库中.)
dogs:
- breed: "wolf"
name: "Fido"
- breed: "wolf"
name: "Roger"
- breed: "dingo"
name: "Nipper"
- breed: "dingo"
name: "Ernie"
- breed: "corgi"
name: "Bernadi"
- breed: "corgi"
name: "Queenie"
- breed: "poodle"
name: "Christopher"
- breed: "poodle"
name: "Tony"
etc
Run Code Online (Sandbox Code Playgroud)
所以现在我想创建一个可用品种的列表.
Dog.find().exec(err, dogs) {
breeds = [];
dogs.each(function(dog)) {
if (breeds.indexOf(dog.breed) === -1) breeds.push(dog.breed);
}
...
}
Run Code Online (Sandbox Code Playgroud)
是否有更简单的方法来执行此操作,数据库上的命中次数更少?就像是
Dog.find().distinct('breed').exec(function(err, breeds){
...
});
Run Code Online (Sandbox Code Playgroud)
我发现这个封闭的水线问题似乎表明我可以使用一种.distinct方法,但我尝试了它并且没有骰子.
Object [object Object] has no method 'distinct'
Run Code Online (Sandbox Code Playgroud)
我如何以数据库有效的方式解决这个问题?
对于这些类型的查询,您可以使用use native方法来执行原始MongoDB命令:
Dog.native(function(err, collection) {
collection.distinct('breed', function(err, dogs) {
// do something here
});
});
Run Code Online (Sandbox Code Playgroud)