mongodb模糊查询like mongodb模糊查询集合_f5


原创:牛津小马哥


在上周的推文中,我们介绍了MongoDB的数据库和集合的操作,现在,让我们来继续学习mongodb的另一个操作:CRUD

CRUD操作:创建、读取、更新、删除文档

创建操作(C)

创建或插入操作即向集合“collection”添加新的文档“documents”。如果插入时集合不存在,插入操作会创建该集合。

插入一个文档到文档集合中:

  • db.collection.insert()
> db.new_db.insert({name:'good day',content:{number:"8",place:"part"}})
WriteResult({ "nInserted" : 1 })


同时插入多个文档到集合中:

  • db.collection.insertMany()
>db.new_db.insertMany([{name:"rainy",content:{"number":"6","place": "part"}},{name:"sunny",content: {"number":"16", "place": "part"}}])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5df5ff197a95a0ed40e59705"),
                ObjectId("5df5ff197a95a0ed40e5970v")
        ]
}


读取操作(R)

从集合中检索文档;即从文档中查询集合。MongoDB提供了以下方法来读取集合中的文档:

  • db.collection.find()

可以指定过滤器或条件来标识返回的文档。

查询所有数据


> db.new_db.find()
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day", "content" : { "number" : "6", "place" : "part" } } { "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "rainy", "content" : { "number" : "6", "place" : "part" } }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }


如果你需要以易读的方式来读取数据,可以使用pretty() 方法

pretty()


> db.new_db.find().pretty()
        "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"),
        "name" : "good day",
        "content" : {
                "number" : "6",
                "place" : "part"
        }
}

        "_id" : ObjectId("5df5ff197a95a0ed40e59709"),
        "name" : "rainy",
        "content" : {
                "number" : "8",
                "place" : "part"
        }
}

        "_id" : ObjectId("5df5ff197a95a0ed40e5970v"),
        "name" : "sunny",
        "content" : {
                "number" : "16",
                "place" : "part"
        }
}


查询中也可指定只返回哪些键,返回的结果只有“name”这个键的数据


> db.new_db.find({},{name:1})
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day" }
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy" }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny" }


查询数据库中带有指定键值的文档数据


> db.new_db.find({name:"rainy"})
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }


$in方法:查询某个键满足在“$in”中指定的集合中的子集(检索name的字段值为“sunny”或者“rainy”的所有文档)


> db.new_db.find({name:{$in:["sunny","rainy"]}})
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }


AND条件:复合查询可以在集合文档的多个字段上指定条件。查询出的文档需同时满足指定的条件。


> db.new_db.insert({name:"rainy","content" : { "number" : "6", "place" : "part"},time:"15"})
WriteResult({ "nInserted" : 1 })
> db.new_db.find({name:"rainy",time:"15"})
{ "_id" : ObjectId("5df60eee7a95a0ed40e5970b"), "name" : "rainy", "content" : { "number" : "6", "place" : "part" }, "time" : "15" }


$or:查询出的文档需至少满足指定的一个条件


> db.locla.find({$or:[{name:"sunny"},{time:"15"}]})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }
{ "_id" : ObjectId("5df60eee7a95a0ed40e5970b"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" }, "time" : "15" }


Mongodb中的条件操作符:$gt(>)、$gte(>=)、$lt(<)、$lte(<=)、$ne(!=)


> db.new_db.insert({name:"test","content" : { "number" : "6", "place" : "part"},time:15})
WriteResult({ "nInserted" : 1 })
> db.new_db.find({time:{$gte:10}})
{ "_id" : ObjectId("5df612ba7a95a0ed40e5970c"), "name" : "test", "content" : { "number" : "8", "place" : "part" }, "time" : 15 }


Like:模糊查询

(查询包含字母“u”的结果,等同于“like '%a%'”)


> db.new_db.find({name:/u/})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }


Count:查询记录条数,看数据中有多少条文档。


> db.new_db.count()
5


Sort :对数据进行排序

  • 升序
> db.new_db.find({"name": "sunny"}).sort({"time": -1})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }


  • 降序
> db.new_db.find({"name": "sunny"}).sort({"time": 1})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }


Limit:限制返回的结果数量


> db.new_db.find().limit(2)
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day", "content" : { "number" : "6", "place" : "part" } } { "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }


更新操作(U)

使用 update() 和 save() 方法来更新集合中的文档

更新操作是修改现有的文档。有以下方法来更新集合文档。

  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.replaceOne()

指定条件或过滤器标识要更新的文档,再使用“$set”更新数据的内容。


> db.new_db.updateOne({name:"test"},{$set:{time:10}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }


在MongoDB中,更新操作针对单个集合。对多个文档进行更新,使用updateMany即可。


db.collection.replaceOne() 用来替换基于过滤器的集合中的一个文件。


要替换除_id 字段以外的文档的所有内容,请将一个全新的文档作为第二个参数传递给:


db.collection.replaceOne()


替换文档时,替换文档必须仅由字段/值对组成。替换文档可以具有与原始文档不同的字段


> db.new_db.replaceOne({name:"good day"},{name:"good day",content:"modified",time:22})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }


删除操作(D)

指定条件或过滤器来找到要删除的文档。有以下删除集合文档的方法。

  • db.collection.deleteOne()
  • db.collection.deleteMany()
  • db.collection.remove()
> db.new_db.deleteOne({name:"good day"})
{ "acknowledged" : true, "deletedCount" : 1 }


查询出“name”值为“good day”的文档 ,并将其删除

deleteOne:即使多个文档可能与指定过滤器匹配,也最多删除一个与指定过滤器匹配的文档。

deleteMany:删除所有匹配指定过滤条件的文档。

Remove:删除单个文档或与指定过滤器匹配的所有文档。不传入条件时,删除所有的文档。

以上内容便是mongodb的CRUD操作介绍,感谢阅读!