pymongo 를 쓰니 편리하게 find 함수로 mongo shell 처럼 검색을 할 수 있다. ObjectID로 검색하려니 ObjectID 로 바꾸는 함수가 별도로 필요로 해 보이는데 (원격 쉘 접속으로 명령을 전달하는 것이 아니니깐) 아래와 같은 귀중한 코드를 구할 수 있었다. 좋은 분들이 많다. 꼭 방문해 주세요 https://ssamko.tistory.com/38 [pymongo] ObjectId로 검색하기 mongodb(pymongo)를 사용하다보면 ObjectId로 검색해야 할 일이 종종 생긴다. mongodb shell에서는 간단하게 아래와 같이 호출할 수 있지만 db.getCollection('collection_name').find({'_id':ObjectId('5f6d775c2.. ss..
Django 에서 MongoDB를 이용하려고 하니 기존에 ORM 기반으로 만든 코드들이 그대로 동작하지 않는다. 일단 호환성을 위해 Djongo 라는 라이브러리가 제공되고 있긴 하나 전부 지원하는 것이 아니기 때문이다. 제일 문제는 model 선언부에서 만든 테이블이 그대로 호환되지 않는다는 점. 일단 models 는 여기서 받아 쓰는 것으로 model.py 파일을 변경하면 된다. from djongo import models 머 스트링, Int, Boolean 이런 것들은 문제가 아니지만 관계형 DB 에서 자주 쓰이는 primary key, foreign key, onetoone mapping 등 relation 과 관련된 키워드들이 100프로 동일하게 변환해 주지 못하므로 발생하는 것 OneToOne..
DB 동시 입력시 실패하는 경우? 일단 현재는 에러 확인 처리가 없다. 모든 save(), update() 함수 아래에서 그 결과를 체크하는 루틴을 넣고 필요에 따라 2번 3번 성공할 때 까지 작업을 하도록 하자. MongoEngine 의 save() 함수는 단순한 insert 가 아니어서 에러 핸들링에 유리하다. page = Page(title="Test Page") page.save() # Performs an insert page.title = "My Page" page.save() # Performs an atomic set on the title field 즉, save 하고, object.id 읽어보고 없다면 다시 save를 그대로 호출하면 DB에 있다면 수정이 되고, 없다면 다시 입력을 할 ..
MongoDB Query 방법 몇개 정리 {serial:{$regex:"^00:08:DC"}} 시리얼이 00:08:DC 로 시작하는 데이터를 검색해라 {serial:{$not:{$regex:"^00:08:DC"}}} 시리얼이 00:08:DC 로 시작하지 않는 데이터를 검색해라 {serial:{$regex:"^00:08:dc",$options:"i"}} 시리얼이 00:08:DC 로 시작하는 데이터를 검색해라. 단, 대소문자 구분은 하지 않는다. {serial:{$not:{$regex:"^00:08:dc",$options:"i"}}} 대소문자 구분 없이 시리얼이 00:08:DC 로 시작하지 않는 데이터를 검색해라 {serial:{$regex:"08:00"}} 시리얼에 08:00 패턴이 있는 것을 검색해라 {..