2016-05-09 70 views
0

我試過使用model.find()的不同變體,但沒有做我想要的。使用mongoose model.find()獲取只有1個字段的所有條目

下面的代碼是我正在使用的,但它顯示每一個字段,我只想要「iframe」字段。下面

app.get('/api/videos', function (req, res) { 
    Video.find({}, function (err, docs) { 
     res.json(docs); 
    }); 
}); 

代碼做的工作,我只得到了「IFRAME」字段中,但它顛倒了JSON輸出,我不希望出現這種情況。它也獲得了獨特的價值,儘管它並不重要,因爲每個條目都是獨一無二的。

app.get('/api/videos', function (req, res) { 
    Video.find().distinct('iframe', function (err, docs) { 
     res.json(docs); 
    }); 
}); 

W¯¯

回答

1

你要找的是所謂projection

Video.find({}, {iframe: 1}, function (err, docs) { 
    res.json(docs); 
}); 

的第二個參數的find函數告訴返回的字段。如果你不希望_id做的一樣好,然後用:{_id:0, iframe:1}

像這樣:

Video.find({}, {_id:0, iframe:1}, function (err, docs) { 
    res.json(docs); 
}); 

然而,投影不會給你不同值。它只返回你想要使用的字段(以及重複)。

+0

啊,這是第二個參數是如何工作的,在我閱讀之前並不明白。感謝您的解釋! – KujAslani

+0

沒有probs。更新我的回答,說'投影'不會給你不同的值,只是你知道。 –

1

您可以使用projection參數來指定您希望在結果中包含哪個字段。

db.collection.find(查詢,投影)

如果發現()包括一個投影參數,匹配的文檔只包含在投影領域和_id領域。您可以選擇排除_id字段。

投影參數採用以下形式的文件:

{ field1: <boolean>, field2: <boolean> ... } 

<boolean>值可以是任何以下的:

1或true,包括場。 find()方法始終包含_id字段,即使該字段沒有明確說明要在投影參數中返回。

0或者爲false排除該字段。

如果包含字段,則只能在_id字段的情況下明確排除字段。

app.get('/api/videos', function (req, res) { 
    Video.find({}, {_id:0, iframe:1 }, function (err, docs) { 
     res.json(docs); 
    }); 
});