2016-01-24 76 views
0

我想使用貓鼬將嵌套的對象保存到我的mongo數據庫。使用貓鼬保存嵌套的對象

我想能夠使用channel.keyboard.link訪問數據,頻道是頻道的名稱,但我無法弄清楚如何完成此操作。

我怎麼能窩在一個頻道名稱的數據,這樣我可以訪問數據,如: summit1g.k​​eyboard.link

例:

summit1g: {keyboard: "RGB K70, link: "http://linktokeyboard.com"} 

對不起,noob問題,先謝謝您的幫助!

這裏是我的架構:

var streamSchema = new Schema({ 
channel: String, 
keyboard: {name: String, link: String, count: Number}, 
mouse: {name: String, link: String, count: Number}, 
monitor: {name: String, link: String, count: Number}, 
headset: {name: String, link: String, count: Number}, 
card: {name: String, link: String, count: Number} 
}); 

將數據保存到數據庫中:

var newStream = Stream({ 
channel: "summit1g", 
keyboard: {name: "RGB K70", link: "http://amzn.to/1dYz0fZ", count: 0}, 
mouse: {name: "Final Mouse", link: "http://amzn.to/1HXYOSv", count: 0}, 
headset: {name: "Audio Technica", link: "http://amzn.to/1LfVc1p", count: 0}, 
monitor: {name: "ASUS", link: "http://amzn.to/1yZGNhK", count: 0}, 
card: {name: "Aver Media", link: "http://amzn.to/1AxA92G", count: 0} 
}); 

回答

1

你的數據字段像keyboard擁有財產性count。所以可能有更多的一個對象。你需要數組。

const streamSchema = new Schema({ 
    channel: String, 
    keyboard: [{name: String, link: String, count: Number}], 
    mouse: [{name: String, link: String, count: Number}], 
    monitor: [{name: String, link: String, count: Number}], 
    headset: [{name: String, link: String, count: Number}], 
    card: [{name: String, link: String, count: Number}] 
}); 

我覺得偶數場計數沒有必要,數組元素的索引就是計數值。

但在你的計劃,你可以使用這樣的查詢:

query.find({ 'channel': 'summit1g', 'keyboard.name': 'RGB K70', 'keyboard.link': 'http://linktokeyboard.com'})