# MongoDB
{{tag>mongo nosql}}
## 문서
- [[MongoDB 필드 삭제]]
- [[save pickle]]
- [[Mongodb Log file]]
- [[Mongodb Repair]]
- [[Mongodb Regex]]
## 로그 파일 삭제
# /var/log/mongodb/mongod.log
sudo cp /dev/null mongod.log
## 도커에서 인증 활성화
- https://stackoverflow.com/questions/34559557/how-to-enable-authentication-on-mongodb-through-docker/43441619#43441619
### docker run
$ docker run -d --rm --name mongo_remote_container \
-p 27000:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=secret_password \
mongo \
mongod --auth
docker run -d --rm --name mongo_remote_container \
-e MONGODB_ADMIN_USER=admin \
-e MONGODB_ADMIN_PASS=secret_admin_pa$$ \
-e MONGODB_APPLICATION_DATABASE=mytestdatabase \
-e MONGODB_APPLICATION_USER=testuser \
-e MONGODB_APPLICATION_PASS=testpass \
-p 27000:27017 aashreys/mongo-auth:latest \
db.auth('admin', 'secret_admin_pa$$')
## mongodb find
### regex
```json
db.getCollection('wine_collection').find({'name_ko': {'$regex' : ".*마르케시 디 바롤로, 사르마싸.*"}})
```
### elemMatch
```json
db.getCollection('wine_collection').find({"varieties" : {'$elemMatch' : {"$eq": "네비올로"}}})
```
## 링크
- http://dev.youngkyu.kr/23
## 특정 필드를 가지고 있는 문서 조회
```db
db.getCollection('stock_company').find({'daily_updated': {'$exists': true}}).count()
```
## 특정 필드 삭제
`$unset` 사용
`multi: true` 를 지정하여 여러 문서에 적용
db.getCollection('stock_company').update({}, {'$unset': {'daily_updated': ''}}, {'multi': true})
여러 필드를 삭제하는 경우
db.getCollection('stock_company').update({}, {'$unset': {'daily_updated': '', 'second_field': ''}}, {'multi': true})