2012-12-18 84 views
4

特定鍵值對如果我有一個MongoDB的集合users這樣的:如何讀取MongoDB的集合

{ 
    "_id": 1, 
    "name": { 
    "first" : "John", 
    "last" :"Backus" 
    }, 
} 

如何取回從這個name.first而不提供_id或其他任何引用。另外,是否有可能拉'name ^可以給我一個嵌入式鍵的數組(在這種情況下是第一個和最後一個)?如何做到這一點?

db.users.find({"name.first"})並沒有爲我工作,我得到了一個:

的SyntaxError「丟失:1

回答

13

的第一個參數是find()查詢條件而:物業編號(殼)後find()方法的第二個參數是投影,它採用文檔的形式,其中包含用於包含或排除結果集的字段列表。您可以指定要包含的字段(例如{ field: 1 }),也可以指定字段排除(例如{ field: 0 })。除非明確排除,否則隱含包含_id字段。

就你的情況而言,db.users.find({name.first})會給出一個錯誤,因爲它應該是一個搜索條件。

要獲取名稱JSON: db.users.find({},{name:1})

如果你想只獲取name.first

db.users.find({},{"name.first":1}) 

MongoDB的文檔鏈接here

+2

至少在mongo shell中使用它時,我需要在「name.first」周圍加引號以防我需要僅獲取name.first – Swapnil

0

獲取所有記錄的細節: db.users.find({「name.first」:「」}) 要獲取名稱或特定字段: db.users.find({{},「name.X」:「」}); 其中X可以是第一個,最後一個。如果需要在數組內部遍歷鍵值對,可以使用點(。)表示法,如 db.users.find({「name.first._id」:「xyz」});