이 치트 시트에는 가능한 한 빨리 연결하고 CRUD 작업을 실행 수 있는 mongosh 에 대한 빠른 참조 명령이 포함되어 있습니다.
| // Omit password if you want to prompt for it |
| mongosh --host <host> --port <port> --authenticationDatabase admin -u <user> -p <pwd> |
|
| mongosh "mongodb://<user>:<password>@192.168.1.1:27017" |
|
| mongosh "mongodb://192.168.1.1:27017" |
|
| mongosh "mongodb+srv://cluster-name.abcde.mongodb.net/<dbname>" --apiVersion |
| 1 --username <username> # MongoDB Atlas |
| db.getMongo() |
| db.getMongo().getDBs() |
| db.hello() |
| db.runCommand({ping: 1}) |
| db.listCommands() |
| db.adminCommand({buildInfo: 1}) |
| use admin |
|
| db.createUser({"user": "root", "pwd": passwordPrompt(), "roles": ["root"]}) |
| db.dropUser("root") |
| db.auth( "user", passwordPrompt() ) |
| db.coll.insertOne({name: "Max"}) |
| db.coll.insertMany([{name: "Max"}, {name:"Alex"}]) |
| db.coll.insertMany([{name: "Max"}, {name:"Alex"}], {ordered: false}) |
| db.coll.insertOne({date: ISODate()}) |
| db.coll.insertOne({name: "Max"}, {"writeConcern": {"w": "majority", "wtimeout": 5000}}) |
| db.coll.findOne() |
| db.coll.find() |
| db.coll.find().pretty() |
| db.coll.find({name: "Max", age: 32}) |
| db.coll.find({date: ISODate("2020-09-25T13:57:17.180Z")}) |
| db.coll.find({name: "Max", age: 32}).explain("executionStats") |
| db.coll.distinct("name") |
|
| db.coll.countDocuments({age: 32}) |
| db.coll.estimatedDocumentCount() |
|
| db.coll.find({"year": {$gt: 1970}}) |
| db.coll.find({"year": {$gte: 1970}}) |
| db.coll.find({"year": {$lt: 1970}}) |
| db.coll.find({"year": {$lte: 1970}}) |
| db.coll.find({"year": {$ne: 1970}}) |
| db.coll.find({"year": {$in: [1958, 1959]}}) |
| db.coll.find({"year": {$nin: [1958, 1959]}}) |
|
| db.coll.find({name:{$not: {$eq: "Max"}}}) |
| db.coll.find({$or: [{"year" : 1958}, {"year" : 1959}]}) |
| db.coll.find({$nor: [{price: 1.99}, {sale: true}]}) |
| db.coll.find({ |
| $and: [ |
| {$or: [{qty: {$lt :10}}, {qty :{$gt: 50}}]}, |
| {$or: [{sale: true}, {price: {$lt: 5 }}]} |
| ] |
| }) |
|
| db.coll.find({name: {$exists: true}}) |
| db.coll.find({"zipCode": {$type: 2 }}) |
| db.coll.find({"zipCode": {$type: "string"}}) |
|
| db.coll.aggregate([ |
| {$match: {status: "A"}}, |
| {$group: {_id: "$cust_id", total: {$sum: "$amount"}}}, |
| {$sort: {total: -1}} |
| ]) |
|
| db.coll.createIndex({ title: "text", content: "text" }) |
|
|
| db.coll.find({$text: {$search: "cake"}}) |
|
|
| db.coll.find({ $text: { $search: "mongodb database" } }) |
| db.coll.find({ $text: { $search: "\"exact phrase\"" } }) |
| db.coll.find({ $text: { $search: "mongodb -database" } }) |
|
|
| db.coll.find({$text: {$search: "cake"}}, {score: {$meta: "textScore"}}).sort({score: {$meta: "textScore"}}) |
|
| db.places.createIndex({ location: "2dsphere" }) |
| db.places.createIndex({ location: "2d" }) |
|
|
| db.places.find({ |
| location: { |
| $near: { |
| $geometry: { type: "Point", coordinates: [-73.9857, 40.7484] }, |
| $maxDistance: 1000 |
| } |
| } |
| }) |
|
|
| db.places.find({ |
| location: { |
| $geoWithin: { |
| $geometry: { |
| type: "Polygon", |
| coordinates: [[ |
| [-74.0059, 40.7128], |
| [-74.0059, 40.7589], |
| [-73.9352, 40.7589], |
| [-73.9352, 40.7128], |
| [-74.0059, 40.7128] |
| ]] |
| } |
| } |
| } |
| }) |
|
| db.coll.find({name: /^Max/}) |
| db.coll.find({name: /^Max$/i}) |
|
| db.coll.find({tags: {$all: ["Realm", "Charts"]}}) |
| db.coll.find({field: {$size: 2}}) |
| db.coll.find({results: {$elemMatch: {product: "xyz", score: {$gte: 8}}}}) |
|
| db.coll.find({"x": 1}, {"actors": 1}) |
| db.coll.find({"x": 1}, {"actors": 1, "_id": 0}) |
| db.coll.find({"x": 1}, {"actors": 0, "summary": 0}) |
|
| db.coll.find({}).sort({"year": 1, "rating": -1}).skip(10).limit(3) |
|
| db.coll.find().readConcern("majority") |
| db.coll.updateOne({"_id": 1}, {$set: {"year": 2016, name: "Max"}}) |
| db.coll.updateOne({"_id": 1}, {$unset: {"year": 1}}) |
| db.coll.updateOne({"_id": 1}, {$rename: {"year": "date"} }) |
| db.coll.updateOne({"_id": 1}, {$inc: {"year": 5}}) |
| db.coll.updateOne({"_id": 1}, {$mul: {price: NumberDecimal("1.25"), qty: 2}}) |
| db.coll.updateOne({"_id": 1}, {$min: {"imdb": 5}}) |
| db.coll.updateOne({"_id": 1}, {$max: {"imdb": 8}}) |
| db.coll.updateOne({"_id": 1}, {$currentDate: {"lastModified": true}}) |
| db.coll.updateOne({"_id": 1}, {$currentDate: {"lastModified": {$type: "timestamp"}}}) |
|
| db.coll.updateOne({"_id": 1}, {$push :{"array": 1}}) |
| db.coll.updateOne({"_id": 1}, {$pull :{"array": 1}}) |
| db.coll.updateOne({"_id": 1}, {$addToSet :{"array": 2}}) |
| db.coll.updateOne({"_id": 1}, {$pop: {"array": 1}}) |
| db.coll.updateOne({"_id": 1}, {$pop: {"array": -1}}) |
| db.coll.updateOne({"_id": 1}, {$pullAll: {"array" :[3, 4, 5]}}) |
| db.coll.updateOne({"_id": 1}, {$push: {"scores": {$each: [90, 92]}}}) |
| db.coll.updateOne({"_id": 2}, {$push: {"scores": {$each: [40, 60], $sort: 1}}}) |
| db.coll.updateOne({"_id": 1, "grades": 80}, {$set: {"grades.$": 82}}) |
| db.coll.updateMany({}, {$inc: {"grades.$[]": 10}}) |
| db.coll.updateMany({}, {$set: {"grades.$[element]": 100}}, {multi: true, arrayFilters: [{"element": {$gte: 100}}]}) |
|
| db.coll.findOneAndUpdate({"name": "Max"}, {$inc: {"points": 5}}, {returnNewDocument: true}) |
|
| db.coll.updateOne({"_id": 1}, {$set: {item: "apple"}, $setOnInsert: {defaultQty: 100}}, {upsert: true}) |
|
| db.coll.replaceOne({"name": "Max"}, {"firstname": "Maxime", "surname": "Beugnet"}) |
|
| db.coll.updateMany({}, {$set: {"x": 1}}, {"writeConcern": {"w": "majority", "wtimeout": 5000}}) |
|
| db.coll.updateMany({status: "pending"}, {$set: {status: "processed"}}) |
|
|
| db.coll.deleteMany({status: "old"}) |
|
|
| db.coll.insertMany([ |
| {name: "user1", status: "active"}, |
| {name: "user2", status: "active"}, |
| {name: "user3", status: "active"} |
| ]) |
|
|
|
|
| db.coll.bulkWrite([ |
| { insertOne: { document: { name: "Alice", age: 30 } } }, |
| { updateOne: { filter: { name: "Bob" }, update: { $set: { age: 25 } } } }, |
| { deleteOne: { filter: { name: "Charlie" } } } |
| ], ordered: false) |
| db.coll.deleteOne({name: "Max"}) |
| db.coll.deleteMany({name: "Max"}, {"writeConcern": {"w": "majority", "wtimeout": 5000}}) |
| db.coll.deleteMany({}) |
| db.coll.findOneAndDelete({"name": "Max"}) |
| db.getName() |
| db.getSiblingDB("dbname") |
| db.stats() |
|
| db.createCollection("contacts", { |
| validator: {$jsonSchema: { |
| bsonType: "object", |
| required: ["phone"], |
| properties: { |
| phone: { |
| bsonType: "string", |
| description: "Required. Must be a string." |
| }, |
| email: { |
| bsonType: "string", |
| pattern: "@mongodb\.com$", |
| description: "String that matches the regular expression." |
| }, |
| status: { |
| enum: [ "Unknown", "Incomplete" ], |
| description: "Must be one of the preceding enum values." |
| } |
| } |
| }} |
| }) |
| // Import JSON data |
| mongoimport --db mydb --collection mycoll --file data.json |
|
| // Export to JSON |
| mongoexport --db mydb --collection mycoll --out data.json |
|
| // Import CSV data |
| mongoimport --db mydb --collection mycoll --type csv --headerline --file data.csv |
|
| // Create database dump |
| mongodump --db mydb --out backup/ |
|
| // Restore from dump |
| mongorestore backup/ |
경고
다음 명령은 데이터를 영구적으로 삭제 . 특히 프로덕션 환경에서는 주의해서 사용하세요.
| db.coll.drop() |
| db.dropDatabase() |
| db.getCollectionNames() |
| db.getCollectionInfos() |
| db.printCollectionStats() |
|
| db.coll.stats() |
| db.coll.storageSize() |
| db.coll.totalIndexSize() |
| db.coll.totalSize() |
| db.coll.validate({full: true}) |
| db.coll.renameCollection("new_coll", true) |
| db.coll.getIndexes() |
| db.coll.getIndexKeys() |
|
| db.coll.createIndex({"name": 1}) |
| db.coll.createIndex({"name": 1, "date": 1}) |
| db.coll.createIndex({foo: "text", bar: "text"}) |
| db.coll.createIndex({"$**": "text"}) |
| db.coll.createIndex({"userMetadata.$**": 1}) |
| db.coll.createIndex({"loc": "2d"}) |
| db.coll.createIndex({"loc": "2dsphere"}) |
| db.coll.createIndex({"_id": "hashed"}) |
|
| db.coll.createIndex({"lastModifiedDate": 1}, {expireAfterSeconds: 3600}) |
| db.coll.createIndex({"name": 1}, {unique: true}) |
| db.coll.createIndex({"name": 1}, {partialFilterExpression: {age: {$gt: 18}}}) |
| db.coll.createIndex({"name": 1}, {collation: {locale: 'en', strength: 1}}) |
| db.coll.createIndex({"name": 1 }, {sparse: true}) |
| db.coll.dropIndex("name_1") |
| db.coll.hideIndex("name_1") |
| db.coll.unhideIndex("name_1") |
|
| session = db.getMongo().startSession() |
| session.startTransaction() |
|
| try { |
| |
| session.getDatabase("mydb").mycollection.insertOne({name: "Alice"}) |
| session.getDatabase("mydb").mycollection.updateOne({name: "Bob"}, {$set: {status: "updated"}}) |
|
| |
| session.commitTransaction() |
| } catch (error) { |
| |
| session.abortTransaction() |
| throw error |
| } finally { |
| session.endSession() |
| } |
| watchCursor = db.coll.watch( [ { $match : {"operationType" : "insert" } } ] ) |
|
| while (!watchCursor.isExhausted()){ |
| if (watchCursor.hasNext()){ |
| print(tojson(watchCursor.next())); |
| } |
| } |
| db.serverStatus() |
| db.hostInfo() |
| db.shutdownServer() |
|
| db.fsyncLock() |
| db.fsyncUnlock() |
| db.getReplicationInfo() |
| db.printReplicationInfo() |
|
| rs.status() |
| rs.initiate({"_id": "RS1", |
| members: [ |
| { _id: 0, host: "mongodb1.net:27017" }, |
| { _id: 1, host: "mongodb2.net:27017" }, |
| { _id: 2, host: "mongodb3.net:27017" }] |
| rs.add("mongodb4.net:27017") |
| rs.addArb("mongodb5.net:27017") |
| rs.remove("mongodb1.net:27017") |
| rs.conf() |
| rs.hello() |
| rs.printReplicationInfo() |
| rs.printSecondaryReplicationInfo() |
| rs.reconfig(config) |
| rs.reconfigForPSASet(memberIndex, config, { options } ) |
| db.getMongo().setReadPref('secondaryPreferred') |
| rs.stepDown(20, 5) |
| db.printShardingStatus() |
| sh.status() |
| sh.addShard("rs1/mongodb1.example.net:27017") |
| sh.enableSharding("mydb") |
| sh.disableSharding("mydb.coll") |
| sh.shardCollection("mydb.coll", {zipcode: 1}) |
| sh.moveChunk("mydb.coll", { zipcode: "53187" }, "shard0019") |
| sh.splitChunk("mydb.coll", { "shardKey": value }) |
| sh.splitAt("mydb.coll", {x: 70}) |
| sh.splitFind("mydb.coll", {x: 70}) |
| sh.updateZoneKeyRange("mydb.coll", {state: "NY", zip: MinKey }, { state: "NY", zip: MaxKey }, "NY") |
| sh.removeRangeFromZone("mydb.coll", {state: "NY", zip: MinKey }, { state: "NY", zip: MaxKey }) |
| sh.addShardToZone("shard0000", "NYC") |
| sh.removeShardFromZone("shard0000", "NYC") |
| sh.startAutoMerger() |
| sh.stopAutoMerger() |
| sh.enableAutoMerger() |
| sh.disableAutoMerger() |
|
| ObjectId() |
| ObjectId("507f1f77bcf86cd799439011") |
| ObjectId().getTimestamp() |
| ObjectId().toString() |
| ObjectId().valueOf() |
|
| NumberInt(42) |
| NumberLong(42) |
| NumberDecimal("42.42") |
|
|
| new Date() |
| ISODate() |
| ISODate("2023-01-01") |
|
|
| BinData(0, "base64encodedstring") |
|
|
| /<pattern>/<flags> |
|
|
| typeof value |
| db.coll.find({field: {$type: "string"}}) |
|
| db.coll.find({name: "John"}).explain() |
| db.coll.find({name: "John"}).explain("executionStats") |
|
|
| db.coll.stats() |
| db.coll.totalIndexSize() |
| db.coll.storageSize() |
|
|
| db.setProfilingLevel(2) |
| db.setProfilingLevel(1, 100) |
| db.setProfilingLevel(0) |
| db.getProfilingStatus() |
|
|
| db.system.profile.find().sort({ts: -1}).limit(5) |
|
|
| db.currentOp() |
| db.killOp(operationId) |
|
|
| db.serverStatus() |
| db.stats() |