如何使用 Waterline 和 Sails.js(版本 0.10)从 mongo 数据库中提取不同的值?

2024-04-14

Using 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

所以现在我想创建一个可用品种的列表。

Dog.find().exec(err, dogs) {
  breeds = [];
  dogs.each(function(dog)) {
    if (breeds.indexOf(dog.breed) === -1) breeds.push(dog.breed);
  }
  ...
}

有没有一种更简单的方法来减少对数据库的点击次数?就像是

Dog.find().distinct('breed').exec(function(err, breeds){
  ...
});

我发现了这个已关闭的水线问题 https://github.com/balderdashy/waterline/issues/60这似乎表明我可以使用.distinct方法,但我尝试了,可惜没有骰子。

Object [object Object] has no method 'distinct'

我如何以数据库有效的方式解决这个问题?


对于此类查询,您可以使用native执行原始 MongoDB 命令的方法:

Dog.native(function(err, collection) {
    collection.distinct('breed', function(err, dogs) {
        // do something here
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Waterline 和 Sails.js(版本 0.10)从 mongo 数据库中提取不同的值? 的相关文章

随机推荐