wafflestudio / snutt-timetable Goto Github PK
View Code? Open in Web Editor NEWSNUTT timetable service
SNUTT timetable service
#67
이거의 연장선
collection 생성 및 index 추가
db.vacancy_notifications.createIndex(
{
"userId": 1,
"lectureId": 1
},
{
unique: true,
})
db.vacancy_notifications.createIndex(
{
"userId": 1,
},
)
db.vacancy_notifications.createIndex(
{
"lectureId": 1
},
)
db.vacancy_notifications.createIndex(
{
"coursebookId": 1
},
)
잘못만듬..
현재 쿼리 오류로 인해 stackoverflow 에러 발생
쿼리 수정 -> 모든 list에서 true 인 쿼리 몽고에서 날리는 것 불가능 하므로 not elematch로 조금 복잡하게 해결
db.users.aggregate( [
{ $group: { _id:{uid:"$credential.localId",active: "$active"}, users: {$push :{id:"$_id", ll: "$lastLoginTimestamp"}}, myCount: { $sum: 1 } } },
// { $group: { _id:{uid:"$credential.fbId",active: "$active"}, users: {$push :{id:"$_id", ll: "$lastLoginTimestamp"}}, myCount: { $sum: 1 } } },
// { $group: { _id:{uid:"$credential.appleEmail",active: "$active"}, users: {$push :{id:"$_id", ll: "$lastLoginTimestamp"}}, myCount: { $sum: 1 } } },
{ $match: { myCount:{ $gt: 1 }, "_id.active": true, "_id.uid": {$exists :1, $ne: null} } },
{ $unwind: "$users"},
{ $group: { _id:"$_id.uid", users: {$push :"$users"}, maxll: { $max: "$users.ll" } } },
{ $unwind: "$users"},
{ $match: {$expr: {
$ne: [ "$maxll", "$users.ll" ]
} }},
{ $replaceRoot: {newRoot: "$users"}}
]).forEach(it => db.users.deleteOne({_id: it.id})))
코드가 점점 섞여서 벌써 스타일이 뒤죽박죽 시작한 느낌
한번 다같이 코드리뷰하는거 어떤가요
PR에서 다 얘기했어야 하는데 못보고 막상 클론받고 보니까 마음에 안드는 부분들이 좀 있는듯?
한번 회의 잡았으면 함
start_time, end_time 이용해 startMinute, endMinute 생성 후
unset으로 다 삭제
let cursor = db.lectures.find({"class_time_json.startMinute" : {$exists: 0}, "class_time_json.start_time" : {$exists: 1}});
while (cursor.hasNext()) {
let document = cursor.next()
const class_time_json = document["class_time_json"].map((json, idx) => {
const startHourMinute = json["start_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const endHourMinute = json["end_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const [startHour, startMinute] = startHourMinute;
const [endHour, endMinute] = endHourMinute;
const startTotalMinute = startHour * 60 + startMinute;
const endTotalMinute = endHour * 60 + endMinute;
return {
...json,
startMinute: startTotalMinute,
endMinute: endTotalMinute
}
})
db.lectures.updateOne({_id: document["_id"]}, {
$set: {
class_time_json: class_time_json,
}
})
}
let cursor2 = db.timetables.find( {lecture_list: {$elemMatch: {"class_time_json.startMinute" : {$exists: 0}, "class_time_json.start_time" : {$exists: 1}}}})
while (cursor2.hasNext()) {
let documentTT = cursor2.next()
let change = documentTT["lecture_list"].map((document, idx) => {
if (document["class_time_json"] !== null && document["class_time_json"].length !== 0) {
const class_time_json = document["class_time_json"].map((json, idx) => {
const startHourMinute = json["start_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const endHourMinute = json["end_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const [startHour, startMinute] = startHourMinute;
const [endHour, endMinute] = endHourMinute;
const startTotalMinute = startHour * 60 + startMinute;
const endTotalMinute = endHour * 60 + endMinute;
return {
...json,
startMinute: startTotalMinute,
endMinute: endTotalMinute
}
})
return {
...document,
class_time_json: class_time_json,
}
} else return document
})
db.timetables.updateOne({_id: documentTT["_id"]}, {
$set: {
lecture_list: change,
}
})
}
let cursor3 = db.bookmarks.find({lecture_list: {$elemMatch: {"class_time_json.startMinute" : {$exists: 0}, "class_time_json.start_time" : {$exists: 1}}}})
while (cursor3.hasNext()) {
let documentTT = cursor3.next()
let change = documentTT["lectures"].map((document, idx) => {
if (document["class_time_json"] !== null && document["class_time_json"].length !== 0) {
const class_time_json = document["class_time_json"].map((json, idx) => {
const startHourMinute = json["start_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const endHourMinute = json["end_time"].split(":")
.map((hourOrMinute) => parseInt(hourOrMinute, 10));
const [startHour, startMinute] = startHourMinute;
const [endHour, endMinute] = endHourMinute;
const startTotalMinute = startHour * 60 + startMinute;
const endTotalMinute = endHour * 60 + endMinute;
return {
...json,
startMinute: startTotalMinute,
endMinute: endTotalMinute
}
})
return {
...document,
class_time_json: class_time_json,
}
} else return document
})
db.bookmarks.updateOne({_id: documentTT["_id"]}, {
$set: {
lectures: change,
}
})
}
db.lectures.updateMany(
{},
{ $unset: { "class_time_json.$[].start": true, "class_time_json.$[].start_time": true, "class_time_json.$[].end_time": true, "class_time_json.$[].len": true }},
)
db.timetables.updateMany(
{},
{ $unset: { "lecture_list.$[].class_time_json.$[].start": true, "lecture_list.$[].class_time_json.$[].start_time": true, "lecture_list.$[].class_time_json.$[].end_time": true, "lecture_list.$[].class_time_json.$[].len": true }},
)
db.bookmarks.updateMany(
{},
{ $unset: { "lectures.$[].class_time_json.$[].start": true, "lectures.$[].class_time_json.$[].start_time": true, "lectures.$[].class_time_json.$[].end_time": true, "lectures.$[].class_time_json.$[].len": true }},
)
db.bookmarks.updateMany({}, {$unset: {"lectures.class_time_mask":1}})
db.lectures.updateMany({}, {$unset: {"class_time_mask":1}})
db.timetables.updateMany({}, { $unset : { "lecture_list.class_time_mask" : 1} })
세 쿼리로 삭제
dev에 적용 완료
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.