Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Практика:
- {
- "stock": "GOOGL",
- "date": ISODate("2014-12-16"),
- "volume": 100,
- "quotes": [0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,42,21,22,23],
- "exchange": {"country": "USA", "name": "NASDAQ"},
- "traders": [{"name": "Don Draper", "id": 42}, {"name": "Rustin Cohle", "id": 21}]
- }
- !!! 1. Для акций GOOGL выставить предпоследнюю котировку в 0 для всех записей за прошлый год на французских (FR) биржах
- // var time = new Date(Date.now());
- // var year = time.getYear() + 1900;
- // var start = new Date(currentYear - 1, 1, 1)
- // var end = new Date(currentYear, 1, 1);
- // db.techno.find( {"exchange.country": "FR", "stock": "GOOGL", "date": {$gte: start, $lt: end}} ).forEach("if this.quotes.length > 2 {this.quotes[this.quotes.length -2] = 0}")
- 2. Определить средний объем операций по акциям YNDX за каждый месяц 2014 года
- // var start = new Date(2014, 1, 1);
- // var end = new Date(2015, 1, 1);
- // db.techno.aggregate(
- // [
- // {
- // $match: {"date": {$gte: start, $lt: end}}
- // },
- // {
- // $group:
- // {
- // _id: { month: {$month: "$date"} },
- // totalAmount: { $sum: "$volume"},
- // }
- // }
- // ]
- // )
- 3. Вставить 0 значение в массив котировок для всех записей, где число котировок меньше 24
- // db.techno.updateMany(
- // {$where: "this.quotes.length < 23"},
- // { $push: { quotes: 0 } }
- // )
- 4. Определить объем операции для каждой американской биржы за 2014 год
- // var start = new Date(2014, 1, 1);
- // var end = new Date(2015, 1, 1);
- // db.techno.aggregate(
- // [
- // {
- // $match: {"date": {$gte: start, $lt: end},
- // "exchange.country": "USA"
- // }
- // },
- // {
- // $group:
- // {
- // _id: { birge: "$exchange.name" },
- // totalAmount: { $sum: "$volume"},
- // }
- // }
- // ]
- // )
- 5. Для каждой акции, которая содержит в названии MAIL, увеличить объем операций на 1
- // db.techno.updateMany( {stock: {$regex: 'MAIL'}}, {$inc: {"volume": 1}})
- 6. Для всех документов, где последняя котировка равно нулю и нет котировки 42, нужно выставить объем операций в 0
- // db.techno.updateMany(
- // {quotes: 42, $where: "this.quotes[this.quotes.length - 1] === 0"},
- // {
- // $set: {volume: 0},
- // $currentDate: { lastModified: true }
- // })
- 7. Удалить все записи американских бирж, где отсутсвует\пустой volume
- // try {
- // db.techno.deleteMany({"volume": null, "exchange.country": "USA"})
- // } catch (e) {
- // print (e);
- // }
- !!!! 8. Найти вторую сотню документов, относящихся к NASDAQ за 2014 год, отсортированных по убыванию объема операций
- // var start = new Date(2014, 1, 1);
- // var end = new Date(2015, 1, 1);
- // db.techno.find({ "date": {$gte: start, $lt: end} , "exchange.name": "NASDAQ"}).sort({volume: -1})
- 9. Найти все документы, где первым трейдером был Don Draper и объем операций при этом превышал 100
- // db.techno.find({ "volume": {$gt : 100}, "traders.0.name": "Don Draper" })
- 10. Во все документы, где в январе 2015го есть трейдер Rustin Cohle с идентификаторов 0, нужно добавить атрибут corrupted, выставленный в true
- // var start = new Date(2015, 1, 1)
- // var end = new Date(2015, 2, 1);
- // db.techno.updateMany( {"traders.name": "Rustin Cohle", "date": {$gte: start, $lt: end}},
- // {$set: {"corrupted": true}, $currentDate: { lastModified: true }} )
- Теория:
- 1. Основные особенности Tarantool
- 2. Основные типы nosql баз данных и их особенности
- 3. Область применения поколоночных и key-value хранилищ
- 4. CAP теорема
- 5. Недостатки\ограничения mongodb
- 6. sharding\replication в mongodb
- 7. Недостатки реляционных СУБД
- 8. Строгая и eventual consistency
- 9. Основные особенности mongo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement