2016-04-26 4 views
1

を返しますか?MongoDBの選択は、このような何かを照会することができます複数のファイルのMySQLでは

db.getCollection('table').distinct('Name',{OtherColumn:'x'}) 

をしかし、それは唯一の名前を持つ配列を返します。 私はこれを行うことはできません。しかし、住所はありません。

MongoDBに2つのクエリーを作成せずに実行する方法はありますか?

db.getCollection('table').distinct('Name',{OtherColumn:'x'}) 
db.getCollection('table').distinct('Address',{OtherColumn:'x'}) 

ありがとうございます。

答えて

1

実際にdistinctは、2つのクエリを実行したくない場合は、ここで使用する正しい方法ではありません。その代わりに、aggregateメソッドを使用し、$group文書を使用し、$addToSetアキュムレータ演算子を使用して、各フィールドに異なる値を返す必要があります。

db.getCollection('table').aggregate([ 
    { "$group": { 
     "_id": null, 
     "Name": { "$addToSet": "$Name", }, 
     "Address": { "$addToSet": "$Address" } 
    }} 
]) 
+0

これは答えですが、唯一のことです。繰り返される名前または住所を避けるには:db.getCollection( 'table')。集計([ {"$ group":{ "_id":null、 "名前":{"$ first": "$ Name" }、 "住所":{"$ first": "$ Address"} }} ])。ありがとう – karrtojal

+0

'$ first'を使うと、あなたのクエリは1つのドキュメントを返すでしょうし、それはあなたが望むものだとは思いません。 – styvane

+0

はい、3つの名前と4つの住所を返します。使用した後、最初に動作します。あなたの例をありがとう。よろしく。 – karrtojal

関連する問題