0

//スタックAngular上に構築された で構築されたアプリを実行しています。NodeExpressMongoDB

私の Mongo データベースには、次のようなオブジェクトがあります。

{
    "infoLink" : "http://foo.com",
    "name" : "Fossil Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Fossil",
},
{
    "infoLink" : "http://foo.com",
    "name" : "Timex Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Timex",
},
{
    "name" : "Casio Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Casio",
}

mongoDB1 つのパラメーターからすべての要素を検索して一覧表示する方法を見つけたいと考えています。たとえば、すべてのエントリを検索し、それらの「デザイナー」値を抽出して、以下を返したいとします。

record = ['Fossil', 'Timex', 'Casio']

実際にここで検索しているレコードは約 20,000 件あるので、できるだけ高速かつ効率的に処理したいと考えています。

すべてのレコードを取得し、それぞれをループして目的のパラメーターを見つけ、それを配列に追加することに頼らずにこれを行う方法はありますか? その解決策は次のようになります。

var arr=[];
db.products.find(criteria, function (err, record) {
        if (err) {
            console.log("Lookup Error: " + err);
        } else{
            record.forEach(function(data){
              if (arr.indexOf(data.designer) > -1){
                  arr.push(data.designer);
               }
            });
        }
    });

しかし、これはかなり不格好な方法だと思います。より良いオプションはありますか?

4

1 に答える 1

1

個別のクエリを使用するのはどうですか:

db.products.distinct("designer")

デシベル。コレクション。個別()

于 2013-07-10T08:09:42.717 に答える