airbnb의 데이터를 MongoDB로 가져오고 검색 데이터를 브라우저에서 표시
개요
airbnb가 게시하는 데이터를 MongoDB로 가져오고 해당 데이터를 mongo 쉘에서 검색합니다. 그 결과를 Browser를 사용하여 표시합니다.
실행 환경
airbnb 데이터 다운로드
이번에는 상기 URL로부터 시드니(Sydney)의 2019/3/7분의 데이터
listings.csv.gz
reviews.csv.gz
을 다운로드합니다. 도쿄(Tokyo)는 에러가 되어 다운로드할 수 없었습니다.
MongoDB로 가져오기
다운로드한 데이터의 압축을 풀고 mongoimport
도구를 사용하여 가져옵니다.
파일 이름
데이터베이스 이름
컬렉션 이름
listings.csv
test
listings
reviews.csv
test
리뷰
CSV 데이터 가져오기
mongoimport -d test -c listings --type csv --headerline listings.csv
mongoimport -d test -c reviews --type csv --headerline reviews.csv
reviews에서 일본어 코멘트를 검색하여 listings에서 데이터를 추가합니다.
mongoimport -d test -c listings --type csv --headerline listings.csv
mongoimport -d test -c reviews --type csv --headerline reviews.csv
てにをは
가 들어가 있다고 합니다.てにをは
의 어느쪽이든이 포함되어 있으면 대상이 됩니다. 良かった
, おすすめ
등을 포함해도 OK입니다. 한자를 사용하면 중국어도 대상이 되어 버립니다. 검색하기 전에
listings
에 인덱스를 만듭니다.db.listings.createIndex({id:1})
다음 자바 스크립트를
find.js
로 만듭니다.find.js
var docs=[]
db.reviews.find({comments:/[て|に|を|は]/}).forEach(doc=>{
listing = db.listings.findOne({id:doc.listing_id})
if (listing == null) return;
data = {id:doc.listing_id, price:listing.price, url:listing.listing_url}
data.latitude = listing.latitude
data.longitude = listing.longitude
data.comments = doc.comments
docs.push(data)
})
print("var airbnbdata =")
printjson(docs)
print("var aribnbdata=")
는 자바 스크립트 변수로 정의되기 때문입니다. _id
는 데이터에 포함되지 않도록 합니다. _id
는 ObjectId()
의 함수로 표현됩니다만, Browser 의 Javascript 에서는 정의되어 있지 않기 때문에 에러가 되기 때문입니다. 그 외에는 ISODate
이나 NumberLong
등이 에러가 됩니다. 직접 함수를 정의하면 오류가 발생하지 않습니다.위의 자바 스크립트를 mongo 쉘을 사용하여 실행하십시오.
mongo --quiet find.js
오류가 없는지 확인한 후 실행 결과를
comments.js
로 저장합니다.mongo --quiet find.js > comments.js
검색 데이터를 브라우저에서 표시
다음 html 파일을 airbnb.html
로 만들고 Browser에서 로컬 파일로 표시합니다.
comments.js
를 먼저 기술해 주세요. listings
의 위도 경도를 사용하여 GoogleMap에서 표시하도록 합니다. GoogleMap을 보려면 h tp // w w. 슈레 y. 이 m / HTML / 굿 gps ps. HTML을 참조했습니다. 둘러싸는 CSS는 h tps://사루와카군. 코 m / HTML-c s / 레후 렌세 / 보 x 를 참고로 했습니다.
airbnb.html<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
.innerbox {
width: 600px;
padding: 0.5em 1em;
margin: 2em 0;
border: solid 2px #6091d3;
white-space: pre-wrap;
}
.outerbox {
width: 640px;
padding: 0.5em 1em;
margin: 2em 0;
border: double 5px #4ec4d3
}
</style>
</head>
<body>
<div id="airbnb" align="center"></div>
<script src="comments.js"></script>
<script>
let htmldata = []
airbnbdata.forEach(doc => {
htmldata.push(`<div class="outerbox" align="left">
<p>${doc.id}<br>price:${doc.price}</p><a href="${doc.url}" target="_blank">${doc.url}</a><br>
<a href="http://maps.google.co.jp/maps?q=loc:${doc.latitude},${doc.longitude}&iwloc=J" target="_blank">
google map</a><pre class="innerbox">${doc.comments}</pre></div>`)
})
document.getElementById("airbnb").innerHTML = htmldata.join('\n')
</script>
</body>
</html>
Browser 이미지
실제 데이터가 아닙니다.
참조 URL
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
.innerbox {
width: 600px;
padding: 0.5em 1em;
margin: 2em 0;
border: solid 2px #6091d3;
white-space: pre-wrap;
}
.outerbox {
width: 640px;
padding: 0.5em 1em;
margin: 2em 0;
border: double 5px #4ec4d3
}
</style>
</head>
<body>
<div id="airbnb" align="center"></div>
<script src="comments.js"></script>
<script>
let htmldata = []
airbnbdata.forEach(doc => {
htmldata.push(`<div class="outerbox" align="left">
<p>${doc.id}<br>price:${doc.price}</p><a href="${doc.url}" target="_blank">${doc.url}</a><br>
<a href="http://maps.google.co.jp/maps?q=loc:${doc.latitude},${doc.longitude}&iwloc=J" target="_blank">
google map</a><pre class="innerbox">${doc.comments}</pre></div>`)
})
document.getElementById("airbnb").innerHTML = htmldata.join('\n')
</script>
</body>
</html>
Reference
이 문제에 관하여(airbnb의 데이터를 MongoDB로 가져오고 검색 데이터를 브라우저에서 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h6591/items/f957d0fd4cac6769df53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)