Skip to content

Latest commit

 

History

History
282 lines (236 loc) · 4.73 KB

readme.md

File metadata and controls

282 lines (236 loc) · 4.73 KB

MongoDB

Start

  1. create instance of mongodb with docker, setting user and password with exposing port 27017
docker run -d --name mongo-server \
   -e MONGO_INITDB_ROOT_USERNAME=memo \
   -e MONGO_INITDB_ROOT_PASSWORD=secret \
   -p 27017:27017 \
   mongo
  1. install cli tool mongosh
brew install mongosh
  1. connect to mongo
mongosh "mongodb://memo:secret@127.0.0.1:27017/"

Databases

show databases
show dbs
use memo

Collections

show collections

db.getCollectionNames();
db.getCollectionInfos({ name: "memo" });

find records

simple select (all, by id)
db.getCollection('memo').find({});
db.getCollection('memo').find({'_id': 'fdbf3b6008b064101a6bb0edcf58e67a'});
select with projection (expand)
db.getCollection("memo").find(
  {
    _id: {
      $in: [
        "fdbf3b6008b064101a6bb0edcf58e67a",
        "66e225a7ada99fe8fd9d15f938a94ce3",
      ],
    },
    "data.goods.type": "fmcg",
    "data.goods.goodId": "6dd6d7a8c1e282f486fe7877486c7f82",
  },
  { "data.goods.goodId": 1, "data.goods.price": 1 },
);

aggregate records

count
db.getCollection('memo').find({'_id': 12345678}).itcount()
pipeline with filter(match), unwind (denormalize), project
db.getCollection("memo").aggregate([
  {
    $match: {
      _id: {
        $in: [
          "fdbf3b6008b064101a6bb0edcf58e67a",
          "2c5be738c6102ba9a33b4d4729e24eff",
        ],
      },
    },
  },

  {
    $unwind: {
      path: "$data.goods",
    },
  },

  {
    $match: {
      "data.goods.available": false,
    },
  },

  {
    $project: {
      _id: 1,
      "data.goods.goodId": 1,
      "data.goods.name": 1,
      "data.goods.price": 1,
    },
  },
]);

insert

simple insert
db.getCollection("memo").insert({ _id: 12345678 });
db["memo"].insert({ _id: 12345678 });
db.memo.insert({ _id: 12345678 });
insert one record db.collections.insertOne(documnent, options)
db.getCollection("memo").insertOne({
  _id: "fdbf3b6008b064101a6bb0edcf58e67a",
  data: {
    goods: [
      {
        goodId: "6dd6d7a8c1e282f486fe7877486c7f82",
        type: "fmcg",
        name: "milk",
        price: 10,
        available: true,
      },
      {
        goodId: "d1c8034bdf0733018fceb39ca251e1f5",
        type: "fmcg",
        name: "potato",
        price: 15,
        available: false,
      },
      {
        goodId: "d1c8034bdf0733018fceb39ca251e1f5",
        type: "fmcg",
        name: "soy milk",
        price: 9,
        available: false,
      },
    ],
  },
});
insert many records db.collection.insertMany(documents, options)
db.getCollection('memo').insertMany([
{
  '_id': '2c5be738c6102ba9a33b4d4729e24eff',
  'data': {
    'goods': [
      {
        'goodId': '6dd6d7a8c1e282f486fe7877486c7f82',
        'type': 'fmcg',
        'name': 'milk',
        'price': 10,
        'available': true
      },
      {
        'goodId': 'd1c8034bdf0733018fceb39ca251e1f5',
        'type': 'fmcg',
        'name': 'potato',
        'price': 15,
        'available': false
      },
      {
        'goodId': 'd1c8034bdf0733018fceb39ca251e1f5',
        'type': 'fmcg',
        'name': 'soy milk',
        'price': 9,
        'available': false
      }
    ]
  }
},
{
  '_id': '66e225a7ada99fe8fd9d15f938a94ce3',
  'data': {
    'goods': [
      {
        'goodId': '6dd6d7a8c1e282f486fe7877486c7f82',
        'type': 'fmcg',
        'name': 'milk',
        'price': 10,
        'available': true
      },
      {
        'goodId': 'd1c8034bdf0733018fceb39ca251e1f5',
        'type': 'fmcg',
        'name': 'potato',
        'price': 15,
        'available': false
      },
      {
        'goodId': 'd1c8034bdf0733018fceb39ca251e1f5',
        'type': 'fmcg',
        'name': 'soy milk',
        'price': 9,
        'available': false
      }
    ]
  }
}
]);

update

update multiple nested arrays with filter applied
db.getCollection("memo").update(
  {
    _id: {
      $in: [
        "fdbf3b6008b064101a6bb0edcf58e67a",
        "2c5be738c6102ba9a33b4d4729e24eff",
      ],
    },
    "data.goods.goodId": "6dd6d7a8c1e282f486fe7877486c7f82",
  },
  {
    $set: { "data.goods.$.available": true },
  },
  { multi: true },
);

delete

simple delete by math
db.getCollection('memo').remove({'_id': 12345678})

other

get connection string

db.getMongo();