我是初學者Mongodb。 我正在使用MoviesLens數據集。mongodb - 摘自標題年份
例如,我的收藏有一個字段'Title' = 'Toy Story (1995)'
。
我想獲取以下信息:
'Title' = 'Toy Story'
'Year' = '1995'
有人能幫幫我,好嗎?
我是初學者Mongodb。 我正在使用MoviesLens數據集。mongodb - 摘自標題年份
例如,我的收藏有一個字段'Title' = 'Toy Story (1995)'
。
我想獲取以下信息:
'Title' = 'Toy Story'
'Year' = '1995'
有人能幫幫我,好嗎?
請記住,在Mongo中,您可以使用一個相當寬的Javascript標準庫子集。關鍵是Array#map
。說,你的收藏被稱爲「電影」。在蒙戈CLI,您的查詢是這樣的:
db.collection('movies').find();
這裏,find
返回cursor。這個遊標支持一堆方法,而map
就是其中之一。 Map以函數作爲第一個參數,該函數將應用於光標的每一項(實際上,它是一個very common functional pattern)。所以,如果你這樣做:
db.collection('movies').find().map(item => item);
,那麼你會擁有自己的元素的集合,因爲
item => item
是與項目和收益項目本身適用不改變功能它。
現在,您有Title
項目的屬性,並且該值是一個字符串,其中包含電影和年份的名稱,用圓括號括起來。要解構一個字符串,通常使用regular expressions。你可以看到一個字符串「Toy Story(1995)」有一個可能的模式:「%MOVIE%(%YEAR%)」,其中%MOVIE%是一系列字母,數字和其他可能的字符(短劃線等),而%YEAR%必須只包含數字。適當的正則表達式將
/^(.+)\s\((\d{4})\)$/
你做下一個是你在map
這需要項目,並做了兩件事施加這樣的功能是什麼:
應該是這樣的:
db.collection('movies').find().map(item => Object.assign({}, item, {
Title: /^(.+)\s\((\d{4})\)$/.match(item.Title)[1],
Year: /^(.+)\s\((\d{4})\)$/.match(item.Title)[2]
}));
請注意,調用cursor.map
不更新集合中的項目。要更新它們,請使用db.collection.update
。