MongoDB概述
Getting started
准备环境
学习之前需要,安装MongoDB
MongoDB 客户端可以安装Robo 3T;
插入多个文档
db.collection.insertMany()?命令用于在集合中一次插入多个文档,当未指定MongoDB 的“_id”时,将会自动生成_id字段。
如在inventory?集合中插入多个文档,返回插入文档的id列表:
db.inventory.insertMany([
// MongoDB adds the _id field with an ObjectId if _id is not present
{ item: "journal", qty: 25, status: "A",
size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "notebook", qty: 50, status: "A",
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
{ item: "paper", qty: 100, status: "D",
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
{ item: "planner", qty: 75, status: "D",
size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "postcard", qty: 45, status: "A",
size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);
db.collection.insertOne()用于插入单个文档。
查询文档
查询所有集合文档
db.collection.find()?用于查询集合所有文档
db.inventory.find( {} )
精确查询key:value
准确查找时,需要指定find()方法中的查询过滤条件,field:value的形式给定,如查询status=“D”文档;
db.inventory.find( { status: "D" } )
嵌入文档查询
通过嵌入的文档作为查询条件,准确查询文档记录,如查询size为{?h:?14,?w:?21,?uom:?"cm"?}的文档记录,注意,查询会考虑字段顺序,和{?w:?21,?h:?14,?uom:?"cm"?}为两个不同的查询条件:
db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
不同于:
db.inventory.find( { size: { w: 21, h: 14, uom: "cm" } } )
嵌入文档的字段查询
查询tags?数组中包含“red”的所有文档
db.inventory.find( { tags: "red" } )
精准查询tags时,Match an Array Exactly,通过整个数组作为tags的查询,查询时需要精确匹配元素顺序:
db.inventory.find( { tags: ["red", "blank"] } )
不同于:
db.inventory.find( { tags: ["blank","red"] } )
二者查询结果不同。