2017-10-13 114 views
-1

例如,我想在我的數據庫中列出所有註冊的發佈者。我將如何做到這一點與此嵌入式文件:如何在所有文檔中查詢所有不同的嵌入式文檔

{ 
    title: "MongoDB: The Definitive Guide", 
    author: [ "Kristina Chodorow", "Mike Dirolf" ], 
    published_date: ISODate("2010-09-24"), 
    pages: 216, 
    language: "English", 
    publisher: { 
       name: "O'Reilly Media", 
       founded: 1980, 
       location: "CA" 
      } 
} 

我想檢索獨立於其書籍的所有DISTINCT出版商。如果我使用這樣的文檔參考會更容易:

{ 
    name: "O'Reilly Media", 
    founded: 1980, 
    location: "CA", 
    books: [123456789, 234567890, ...] 
} 

{ 
    _id: 123456789, 
    title: "MongoDB: The Definitive Guide", 
    author: [ "Kristina Chodorow", "Mike Dirolf" ], 
    published_date: ISODate("2010-09-24"), 
    pages: 216, 
    language: "English" 
} 

但我不想這樣做。

+1

您可以查詢使用'db.collection_name.find讓所有的出版商({},{出版社:1}) '。對於不同的發佈商,您可以嘗試'db.collection_name.distinct(「publisher」)' – Veeram

+0

我認爲這是我想要的 – jvitoroc

+0

但是,distinct的性能呢?它會檢查每本書,甚至是其出版商已經檢索到的書籍。我對嗎? – jvitoroc

回答

0

您是否希望獲得所有出版商的支持?你有沒有嘗試MongoDB聚集$項目管道?

喜歡的東西:

db.collection.aggregate([ 
    { 
     $project: { 
      "_id": 0, //This line is optional 
      "publisher": 1 
     } 
    } 
]) 
0

你也可以試試這個:

db.getCollection('yourCollectionName').aggregate([ 
{ 
    $group: { 
     _id: "$publisher" 
     } 
} 
]) 
相關問題