forked from PastVu/pastvu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimportingDB.txt
141 lines (117 loc) · 8.59 KB
/
importingDB.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
ИМПОРТ в Mongo json коллекции (например из myphpadmin)
1. Вариант загрузки как массива объектов
mongoimport -d pastvu -c old_photos --drop --type json --jsonArray --file import\photos.json
\n ->> \\n или <br> если надо сохранить пробелы в html
\t ->> (пробел)
2. Вариант загрузки как строки объектов
mongoimport -d pastvu -c photosold --drop --type json --jsonArray --file photos.json
Удалить скобки массива
\n ->> \\n или <br> если надо сохранить пробелы в html
\t ->> (пробел)
}, { --> }\n{
Просмотр дубликатов по полю title_en
Через aggregate
db.regions.aggregate({$group: {_id: "$title_en", total: {$sum: 1} }}, {$match: { total: {$gte: 2} }}, {$sort: {total: -1}}, {$limit : 10});
Через mapReduce
Немедленный вывод:
db.regions.mapReduce(function () {emit(this.title_en, 1)}, function (k, vals) {return Array.sum(vals);}, {out : {inline: 1}}).results.filter(function (item) {return item.value > 1})
Вывод в таблицу с сортировкой:
db.regions.mapReduce(function () {emit(this.title_en, 1)}, function (k, vals) {return Array.sum(vals);}, {out : "myDupesCollection"});
db.myDupesCollection.find().sort({value: -1})
ПЕРЕНОС ДАМПА Mongo
1. Делаем полный дамп (bson)
mongodump -db pastvu -o C:\Mongo\bin\dump
2. Восстановление из дампа
mongorestore --db pastvu C:\Mongo\bin\dump\pastvu
Можно экспортировать все коллекции и потом импортировать по одной
Batch срипт для экспорта всех коллекций (http://stackoverflow.com/questions/11255630/how-to-export-all-collection-in-mongodb)
mongo "{YOUR SERVER}/{YOUR DATABASE}" --eval "rs.slaveOk();db.getCollectionNames()" --quiet>__collections.txt
for /f %%a in ('type __collections.txt') do @set COLLECTIONS=%%a
for %%a in (%COLLECTIONS%) do mongoexport --host {YOUR SERVER} --db {YOUR DATABASE} --collection %%a --out data\%%a.json
del __collections.txt
ПОСЛЕДОВАТЕЛЬНОСТЬ КОНВЕРТАЦИИ
db.loadServerScripts()
oldConvertAll()
Или последовательность:
oldConvertUsers()
oldConvertPhotos()
oldConvertComments()
oldConvertNews()
oldConvertUsers('old_usersSpb', true)
oldConvertPhotos('old_photosSpb', true)
oldConvertComments('old_commentsSpb', true)
calcUserStats()
calcPhotoStats()
sudo node app.js --land prod --domain pastvu.com --port 80 --uport 3001
[0,0] - Точка
[[0,0],[1,1],[2,2]] - Линия (массив точек)
[ [[0,0],[2,2],[1,3],[-1,3],[0,0]], [[1,1],[1.2,1.2],[1,1.9],[1,1]] ] - Полигон (массив замкнутых линий)
[ [ [[0,0],[2,2],[1,3],[-1,3],[0,0]], [[1,1],[1.2,1.2],[1,1.9],[1,1]] ], [ [[0,-1],[1,0],[0.1,0],[0,-1]] ] ] - Мультиполигон (массив полигонов)
Общее кол-во точек регионов
db.regions.find({}, {pointsnum: 1}).toArray().reduce(function(prevValue, currValue) {return prevValue + currValue.pointsnum}, 0)
Выгрузить csv определенные поля по запросу
mongoexport -d pastvu -c users --csv --fields login,birthdate,sex --query '{"$and":[{"$or":[{"pcount":{"$gt":0}},{"ccount":{"$gt":0}}]},{"$or":[{"birthdate":{"$nin":[null,"1.1.1920"]}},{"sex":{"$ne":null}}]}]}' --out mdump/users.csv
/*Подсчет количества точек по уровням в mongodb 2.2-2.4*/
//Считаем количество регионов и точек первого(нулевого) уровня
//Его надо считать отдельно, так как в следущем агрегаторе $unwind "раскроет" только те, у кого массив parents не пуст
Region.collection.aggregate([
{$project: {_id: 0, parents: 1, pointsnum: 1}},
{$match: {parents: {$size: 0}}},
{$group: {_id: null, total: {$sum: '$pointsnum'}}}
], this.parallel());
//Считаем количество регионов и точек последующих уровней
Region.collection.aggregate([
{$project: {_id: 0, cid: 1, parents: 1, pointsnum: 1}},
{$unwind: '$parents'}, //"Раскрываем" массив родителей по каждому региону, т.е. будет несколько строк одного региона по количеству его родителей
{$group: {_id: '$cid', size: {$sum: 1}, pointsum: {$sum: '$pointsnum'}}}, //Считаем количество каждого раскрытого региона, таки образом получив количество родительских. Также складываем кол-во точек
{$project: {size: 1, realpointsum: {$divide: ['$pointsum', '$size']}}}, //Делим количество точек на количество родительских, получая реального кол-во точек региона
{$group: {_id: '$size', regionscount: {$sum: 1}, totalpointsum: {$sum: '$realpointsum'}}}, //Складываем количество точек по каждому количеству родительских (уровню)
{$project: {size: '$_id', regionscount: 1, totalpointsum: 1, _id: 0}}, //Переименовываем поля в более читаемые
{$sort: {size: 1}}
], this.parallel());
/*Подсчет количества точек по уровням в mongodb 2.6*/
Region.collection.aggregate([
{$project: {_id: 0, level: {$size: '$parents'}, pointsnum: 1}},
{$group: {_id: '$level', regionscount: {$sum: 1}, pointscount: {$sum: '$pointsnum'}}},
{$sort: {_id: 1}}, //Сортируем по родительский по возрастанию
{$project: {regionscount: 1, pointscount: 1, _id: 0}}
], this);
Удалить точку в конце имени фотографии (исключая многоточие)
db.photos.find({title: /^.+[^\.]\.$/i}, {title: 1}).forEach(function (photo) { db.photos.update({_id: photo._id}, {$set: {title: photo.title.substr(0, photo.title.length - 1)}}); })
Убирает название города в начале названия фотографии
var regRxp = /^(\s*москва\s*[\.,]\s*)(.+)$/i; db.photos.find({title: regRxp}, {title: 1}).forEach(function (photo) { db.photos.update({_id: photo._id}, {$set: {title: photo.title.replace(regRxp, '$2') }}); })
ПЕРЕНОС ФАЙЛОВ
CMD скрипт по flatten всех файлов во всех подпапках в одну результирующую папку:
forfiles /s /m *.* /p \_test\pastvu\photosAll /c "cmd /c move @file \_test\pastvu\result"
Cкрипт для переименовани файлов путем удаления части до подчеркивания
С помощью Bash:
for f in *_*.jpg; do mv "$f" "${f/*_/}"; done
Через регулярное выражение: ^(?:[^_]+_)?(.+) достать $1
С помощью CMD. http://stackoverflow.com/questions/15135920/remove-file-name-prefix-with-cmd
Создаем bat-file рекуивно итерирующийся по папкам и вызыващим для них следующий bat:
@echo off
call "%~dp0dashrem.bat"
for /r /d %%x in (*) do (
pushd "%%x"
call "%~dp0dashrem.bat"
popd
)
Создаем bat-file для переименования всех файлов в папке
setlocal enabledelayedexpansion
for %%F in (*.jpg) do (
set "FN=%%F"
if "!FN:~4,1!"=="_" (
set "FN=!FN:~5!"
ren "%%F" "!FN!"
)
)
composite -dissolve 100% -gravity southwest -geometry +2+2 water2.png test2.jpg res2.jpg
convert res2.jpg -gravity southwest -font "Verdana" -pointsize 10 -fill rgba(255,255,255,0.75) -annotate +19+3 http://pastvu.com/u/Duche res3.jpg
D:\_PROJS\pastvu\app\misc>convert -size 260x14 xc:none -font C:\Windows\Fonts\AdobeFanHeitiStd-Bold.otf -pointsize 11 -gravity west -stroke rgba(0,0,0,0.35) -strokewidth 3 -fill #888 -annota
te 0 " www.pastvu.com | ArchitectorS | #101604" +repage -stroke none -fill #eaeaea -annotate +0+0 " www.pastvu.com | ArchitectorS | #101604" test4.jpg +swap -gravity southwest -g
eometry +20+3 -composite -gravity southwest -geometry +3+3 water3.png -composite exmpl10.jpg
Пакетный конверт всех jpg в папке в webP
setlocal enabledelayedexpansion
for %%F in (D:\_PROJS\pastvu\publicContent\photos\micros\*.jpg) do (
C:\libwebp-0.2.1\cwebp -short %%F -o %%F.webp
)