mongod CRUD

一:插入数据

1.直接插入
db.inventory.insert(
   {
     item: "ABC1",
     details: {
        model: "14Q3",
        manufacturer: "XYZ Company"
     },
     stock: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ],
     category: "clothing"
   }
)
当数据库中如果没有inventory这个collection时,会自动创建它。

2.通过数组插入
var mydocuments =
    [
      {
        item: "ABC2",
        details: { model: "14Q3", manufacturer: "M1 Corporation" },
        stock: [ { size: "M", qty: 50 } ],
        category: "clothing"
      },
      {
        item: "MNO2",
        details: { model: "14Q3", manufacturer: "ABC Company" },
        stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 }, { size: "L", qty: 1 } ],
        category: "clothing"
      },
      {
        item: "IJK2",
        details: { model: "14Q2", manufacturer: "M5 Corporation" },
        stock: [ { size: "S", qty: 5 }, { size: "L", qty: 1 } ],
        category: "houseware"
      }
    ];
db.inventory.insert( mydocuments );

3.通过Bulk插入
var bulk = db.inventory.initializeUnorderedBulkOp();
bulk.insert(
   {
     item: "BE10",
     details: { model: "14Q2", manufacturer: "XYZ Company" },
     stock: [ { size: "L", qty: 5 } ],
     category: "clothing"
   }
);
bulk.insert(
   {
     item: "ZYT1",
     details: { model: "14Q1", manufacturer: "ABC Company"  },
     stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 } ],
     category: "houseware"
   }
);
bulk.execute();

二:查询

1.空查询(返回所有文档)
db.inventory.find( {} )
db.inventory.find()

2.按照值查询
db.inventory.find( { type: "snacks" } )

3.in条件查询
db.inventory.find( { type: { $in: [ 'food', 'snacks' ] } } )

4.and条件查询
db.inventory.find( { type: 'food', price: { $lt: 9.95 } } )

5.or条件查询
db.inventory.find(
   {
     $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
   }
)

6.and & or 条件查询
db.inventory.find(
   {
     type: 'food',
     $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
   }
)

7.有嵌套的查询
db.inventory.find(
    {
      producer:
        {
          company: 'ABC123',
          address: '123 Street'
        }
    }
)

db.inventory.find( { 'producer.company': 'ABC123' } )

8.数组查询
db.inventory.find( { ratings: [ 5, 8, 9 ] } )
db.inventory.find( { ratings: 5 } )
db.inventory.find( { 'ratings.0': 5 } ) //数组的第一个值匹配5
db.inventory.find( { ratings: { $elemMatch: { $gt: 5, $lt: 9 } } } ) //数组中至少一个元素 >>5 且 <<9
db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } ) //数组中有一个元素满足>>5 且 <<9 或者 有一个>>5,另一个<<9

9.嵌套的数组查询
{
  _id: 100,
  type: "food",
  item: "xyz",
  qty: 25,
  price: 2.5,
  ratings: [ 5, 8, 9 ],
  memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}

{
  _id: 101,
  type: "fruit",
  item: "jkl",
  qty: 10,
  price: 4.25,
  ratings: [ 5, 9 ],
  memos: [ { memo: "on time", by: "payment" }, { memo: "delayed", by: "shipping" } ]
}

db.inventory.find( { 'memos.0.by': 'shipping' } )
db.inventory.find( { 'memos.by': 'shipping' } )

db.inventory.find(
   {
     memos:
       {
          $elemMatch:
            {
               memo: 'on time',
               by: 'shipping'
            }
       }
    }
)

db.inventory.find(
  {
    'memos.memo': 'on time',
    'memos.by': 'shipping'
  }
)

三:修改

1.更新一个字段的值
db.inventory.update(
    { item: "MNO2" },
    {
      $set: {
        category: "apparel",
        details: { model: "14Q3", manufacturer: "XYZ Company" }
      },
      $currentDate: { lastModified: true }
    }
)

2.更新一个嵌入的字段
db.inventory.update(
  { item: "ABC1" },
  { $set: { "details.model": "14Q2" } }
)

3.更新多个文档
db.inventory.update(
   { category: "clothing" },
   {
     $set: { category: "apparel" },
     $currentDate: { lastModified: true }
   },
   { multi: true }
)

4.更新使用upsert
db.inventory.update(
   { item: "TBD1" },
   {
     item: "TBD1",
     details: { "model" : "14Q4", "manufacturer" : "ABC Company" },
     stock: [ { "size" : "S", "qty" : 25 } ],
     category: "houseware"
   },
   { upsert: true }
)

四:删除

1.删除所有文档
db.inventory.remove({})

2.删除匹配条件的文档
db.inventory.remove( { type : "food" } )

3.删除一个匹配条件的文档
db.inventory.remove( { type : "food" }, 1 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值