文章目录

数据库连接集合创建查询删除查询显示指定字段限制查询条数 limit ,skip排序索引创建聚合查询

数据库连接

mongodb URL

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

语法说明如下:

mongodb://:这是固定的格式,必须要指定;username:password@:可选项,如果设置,在连接数据库服务器之后,驱动会尝试以给出的用户名(username)和密码(password)登录这个数据库;host1:必填参数,用来指定要连接服务器的地址,如果要连接复制集,则需要指定多个主机地址;portX:可选项,用来指定端口,如果不填,默认为 27017; /database:可选项,如果指定了username:password@,则连接并验证登录指定的数据库,若不指定,则默认打开 test 数据库;?options:可选项,用来定义连接选项,连接选项的可选值如下表所示,如果不使用/database,则前面需要使用/与前面的内容分隔,所有连接选项都是键值对 name=value 的形式,键值对之间通过&或;(分号)隔开。

下面通过一些简单的示例来演示一下:

连接到一个运行在本机的,端口为 27017 的 MongoDB:

mongodb://localhost

连接到一个运行在本机的,端口为 27017 的 MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将默认使用 admin 数据库:

mongodb://fred:foobar@localhost

连接到一个运行在本机的,端口为 27017 的 MongoDB,并以用户名"fred"和密码"foobar"登录,登录后使用 baz 数据库:

mongodb://fred:foobar@localhost/baz

连接到一个 replica pair,一台服务器在 c.biancheng.net,另一台在 www.biancheng.net:

mongodb://c.biancheng.net:27017,www.biancheng.net:27017

连接到本机的一个 replica set,端口分别为 27017、27018、27019:

mongodb://localhost,localhost:27018,localhost:27019

连接 replica set 中的三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器:

mongodb://host1,host2,host3/?slaveOk=true

直接连接第一个服务器,无论该服务器是否为 replica set 的一部分,也无论它是主服务器还是从服务器:

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

注意:上述的连接主要用于在您偏好使用某台服务器,但又有可供替换的服务器时。

使用安全模式连接到 localhost:

mongodb://localhost/?safe=true

以安全模式连接到 replica set,并且等待至少两个复制服务器成功写入,超时时间设置为 2 秒:

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

集合创建

db.createCollection(name, options)

参数说明如下: name: 要创建的集合名称; options: 可选参数, 指定有关内存大小及索引的选项,可选值如下表所示:

当我们在集合中插入文档时,MongoDB 会首先检查固定集合的 size 字段,然后检查 max 字段。

> db.createCollection("mycol", { capped : true, autoIndexId : true, size : 102400, max : 1000 } )

{

"note" : "the autoIndexId option is deprecated and will be removed in a future release",

"ok" : 1

}

> show tables

mycol

删除集合

db.mycol.drop()

循环插入

rsb:PRIMARY> for(var i=1;i<=10;i++){

... db.user.insert({name:"user"+i,age:20+i,phone:"18900898777"})

... }

WriteResult({ "nInserted" : 1 })

此外,还有insertOne,insertMany

查询

db.mycol.insert([

... {

... title: "MongoDB教程",

... description: "MongoDB 是一个 Nosql 数据库",

... by: "编程帮",

... url: "http://www.biancheng.net",

... tags: ["mongodb", "database", "NoSQL"],

... likes: 999

... },

... {

... title: "NoSQL数据库",

... description: "NoSQL数据库中没有数据表",

... by: "编程帮",

... url: "http://www.biancheng.net",

... tags: ["mongodb", "database", "NoSQL"],

... likes: 100,

... comments: [

... {

... user:"admin",

... message: "第一个评论",

... dateCreated: new Date(2021,01,10,2,35),

... like: 0

... }

... ]

... }

... ])

db.mycol.find() db.collection_name.find(query, projection).pretty() db.mycol.find().pretty() db.mycol.findOne({title:“MongoDB教程”})

删除

db.collection_name.remove(

,

{

justOne: ,

writeConcern:

}

)

例如

db.course.remove({‘title’:‘MongoDB教程’},{justOne:true})

全量删除

db.course.remove({}) db.course.count() 此时个数是0

查询显示指定字段

rsb:PRIMARY> db.mycol.find()

{ "_id" : ObjectId("63aa8fdd15d5e335bebf0172"), "title" : "MongoDB", "description" : "MongoDB Nosql ", "by" : "", "url" : "http://www.biancheng.net", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 999 }

{ "_id" : ObjectId("63aa8fdd15d5e335bebf0173"), "title" : "NoSQL", "description" : "NoSQL荼", "by" : "", "url" : "http://www.biancheng.net", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100, "comments" : [ { "user" : "admin", "message" : "", "dateCreated" : ISODate("2021-02-09T18:35:00Z"), "like" : 0 } ] }

rsb:PRIMARY> db.mycol.find({},{title:1})

{ "_id" : ObjectId("63aa8fdd15d5e335bebf0172"), "title" : "MongoDB" }

{ "_id" : ObjectId("63aa8fdd15d5e335bebf0173"), "title" : "NoSQL" }

rsb:PRIMARY> db.mycol.find({},{title:1,_id:0})

{ "title" : "MongoDB" }

{ "title" : "NoSQL" }

rsb:PRIMARY>

限制查询条数 limit ,skip

rsb:PRIMARY> db.course.find().limit(1)

{ "_id" : ObjectId("63aa958d6921a45cb71a7af8"), "title" : "MongoDB", "author" : "", "url" : "http://www.biancheng.com/mongodb/index.html" }

rsb:PRIMARY> db.course.find()

{ "_id" : ObjectId("63aa958d6921a45cb71a7af8"), "title" : "MongoDB", "author" : "", "url" : "http://www.biancheng.com/mongodb/index.html" }

{ "_id" : ObjectId("63aa958d6921a45cb71a7af9"), "title" : "HTML", "author" : "", "url" : "http://www.biancheng.com/html/index.html" }

{ "_id" : ObjectId("63aa958d6921a45cb71a7afa"), "title" : "C#", "author" : "", "url" : "http://www.biancheng.com/csharp/index.html" }

rsb:PRIMARY> db.course.find().skip(3)

rsb:PRIMARY> db.course.find().skip(2)

{ "_id" : ObjectId("63aa958d6921a45cb71a7afa"), "title" : "C#", "author" : "", "url" : "http://www.biancheng.com/csharp/index.html" }

rsb:PRIMARY> db.course.find().skip(0)

{ "_id" : ObjectId("63aa958d6921a45cb71a7af8"), "title" : "MongoDB", "author" : "", "url" : "http://www.biancheng.com/mongodb/index.html" }

{ "_id" : ObjectId("63aa958d6921a45cb71a7af9"), "title" : "HTML", "author" : "", "url" : "http://www.biancheng.com/html/index.html" }

{ "_id" : ObjectId("63aa958d6921a45cb71a7afa"), "title" : "C#", "author" : "", "url" : "http://www.biancheng.com/csharp/index.html" }

rsb:PRIMARY> db.course.count()

3

排序

rsb:PRIMARY> db.course.find({},{_id:0,title:1}).sort({}) 默认按照_id升序排列

{ "title" : "MongoDB" }

{ "title" : "HTML" }

{ "title" : "C#" }

rsb:PRIMARY> db.course.find({},{_id:0,title:1}).sort({title:-1}) 按照title降序排序

{ "title" : "MongoDB" }

{ "title" : "HTML" }

{ "title" : "C#" }

rsb:PRIMARY> db.course.find({},{_id:0,title:1}).sort({title:1})

{ "title" : "C#" }

{ "title" : "HTML" }

{ "title" : "MongoDB" }

索引创建

rsb:PRIMARY> db.course.createIndex({title:1})

{

"createdCollectionAutomatically" : false,

"numIndexesBefore" : 1,

"numIndexesAfter" : 2,

"commitQuorum" : "votingMembers",

"ok" : 1,

"$clusterTime" : {

"clusterTime" : Timestamp(1672124587, 7),

"signature" : {

"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

"keyId" : NumberLong(0)

}

},

"operationTime" : Timestamp(1672124587, 7)

}

rsb:PRIMARY> db.course.getIndexes()

[

{

"v" : 2,

"key" : {

"_id" : 1

},

"name" : "_id_"

},

{

"v" : 2,

"key" : {

"title" : 1

},

"name" : "title_1"

}

]

rsb:PRIMARY>

删除索引

rsb:PRIMARY> db.course.dropIndex({title:1}) --删除指定索引

{

"nIndexesWas" : 2,

"ok" : 1,

"$clusterTime" : {

"clusterTime" : Timestamp(1672124846, 1),

"signature" : {

"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

"keyId" : NumberLong(0)

}

},

"operationTime" : Timestamp(1672124846, 1)

}

rsb:PRIMARY> db.course.getIndexes()

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

rsb:PRIMARY>

db.collection_name.dropIndexes() 可以删除除了_id以外的所有索引

聚合查询

db.course.aggregate([{$group : {_id : "$author", sum : {$sum : 1}}}])

{ "_id" : "编程帮", "sum" : 3 }

上述示例类似于 SQL 语句中的SELECT author, count(*) FROM course GROUP BY author。

下面介绍了聚合框架中几个常用的操作:

$project:用于从集合中选择要输出的字段; $match:用于过滤数据,只输出符合条件的文档,可以减少作为下一阶段输入的文档数量; $group:对集合中的文档进行分组,可用于统计结果; $sort:将输入文档进行排序后输出; $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档; $limit:用来限制 MongoDB 聚合管道返回的文档数量; $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。

下面通过几个简单的示例来演示 MongoDB 中管道的使用:

使用 $project 来选择要输出的字段:

rsb:PRIMARY> db.course.aggregate({$project:{title:1,author:1}}).pretty()

{

"_id" : ObjectId("63aa958d6921a45cb71a7af8"),

"title" : "MongoDB",

"author" : "BIANCHENGBANG"

}

{

"_id" : ObjectId("63aa958d6921a45cb71a7af9"),

"title" : "HTML",

"author" : ""

}

{

"_id" : ObjectId("63aa958d6921a45cb71a7afa"),

"title" : "C#",

"author" : ""

}

rsb:PRIMARY>

使用$skip跳过指定的文档

rsb:PRIMARY> db.course.aggregate({$skip:2}).pretty()

{

"_id" : ObjectId("63aa958d6921a45cb71a7afa"),

"title" : "C#",

"author" : "",

"url" : "http://www.biancheng.com/csharp/index.html"

}

rsb:PRIMARY>

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: