2017-11-17-笔记2-mongoDB

来源:互联网 发布:linux安装ssh命令 编辑:程序博客网 时间:2024/06/09 19:34

1. ObjectId()与save()函数,用传递新文档替换旧文档

db.集合名.save({"_id":ObjectId("5a0c08938b0f19e5e23c53d5"),键:值,.....})


注意:ObjectId()里的ID是带引号,ObjectId()这个单词也必须打出来


再添加集合时候插入"_id":'12',就不会自动生成一个"_id":ObjectId("5a0c08938b0f19e5e23c53d5")


2. 投影操作

find():权限所选择的键,1表示该键,0表示隐藏键

db.集合名.find({需要满需的查询条件},{KEY:1,KEY:0})

/*注意:默认为1,显示所有键
有_id的时候可以有KEY0,1混用但是KEY:0必须在前
无_id时KEY:0,1不能混用*/


3. limit()接收一个数字参数,显示多个文档
db.集合名.find(),limit(数字)


4. skip()跳过几行文档
db.集合名.find().skip(数字).limit(数字)

5. sort()记录排序

1:升序
-1:降序
db.集合名.find().sort({key:1,key:-1})

6. 查询数组

1) $all 通过多个元素来匹配数据
db.集合名.find({键:{$all:['值1','值2']}})
2) $size 查找特定长度的数据
db.集合名.find({键:{$size:3}})


7. $slice  返回某个键匹配的数组元素的一个子集
db.books.insert(
{
'title':"MongoDB Overview",
'by':'tutuorials point',
'tags':['python','database','it'],
'likes':100,
'comment':[{'anme':'yang','comment':'bab'},{'name':'min','comment':'grent'}]
})


db.books.insert({
title:"Metwork Overview",
by:'renming',
tags:['python','database','it'],
likes:20,
comment:[{anme:'yang','comment':'good'},{name:'min',comment:'nice'}]
}
)
{$slice:10} 返回前十条评论
{$slice:-10} 返回后十条评论
{$slice:[23,10]}返回第24条至第33条评论


db.books.find({title:'Metwork Overview'},{comment:{$slice:[0,1]}}).pretty()

/*******************************************************************************************/

8. 文本搜索
创建文本索引,找含有咖啡信息文本


db.stores.insert([
{_id:1,name:'Java Hut',description:'Coffee and cakes'},
{_id:2,name:'Burger Buns',description:'hamburgers'},
{_id:3,name:'Coffee Shop',description:'Just Coffee'},
{_id:4,name:'Clother',description:'Discount clothing'},
{_id:5,name:'Java shopping',description:'Indonesian goods'}
])

文本索引 Text Index

包含任何含有字符串或者字符串数组的元素
你的集合中必须首先创建文本索引,一条集合只能有一条文本搜索索引,但是索引可以覆盖多个自段

db.集合名.createIndex({键:'text',键:"text"})

$text 完成文本所所,他将把查询字符串用空格或分隔符分段,各个词之间用逻辑or链接

查找商店包含'coffee','shop','java'中任何一个

db.集合名.find({$text:{$search:"字段1 字段2......"}})


///////////////////////////////////////////////////////////////////////////////////////////////////////////////

注意:两个必须一起使用/*

db.集合名.createIndex({键:'text',键:"text"})

db.集合名.find({$text:{$search:"字段1 字段2......"}})

//////////////////////////////////////////////////////////////////////////////////////////////////////

注意:
目前学到的三个参数
update({查询},{修改},{multi:true})


对比:区分大小写
db.stores.find({name:"Java Hut"})  <ok>
db.stores.find({name:"java Hut"})  <no>

使用$text优点,可以同时在多个属性中查找文本

排除文字
用"-"符号表示包含
查找包含java或者shop,凡是文本中不包含coffee的文档
db.stores.find({$text:{$search:"java -coffee shop"}})


练习
查找food,fruit列表中包含apple 但是不包含banana的文档
db.food.createIndex({fruit:"text"})  《必须先建立文本索引在查找》
db.food.find({$text:{$search:"apple -banana"}})


9.精确匹配文字
用双引号扩起来的文字为精确匹配
例子
db.stores.find({$text:{$search:"java\"coffee shop\""}})


10.使用点表示法查询,两种方法
$elemMatch:element match

db.集合名.find({"外键":{$elemMatch:{"内键":"值"}}}).pretty()
db.集合名.find({"外键.内键":"值"}).pretty()


修改内嵌文档
基于位置的数组修改器,若是数组有多个值,而我们只对其中的一部分进行行操作,有两种方法

1).通过位置:数组下标是以0开头的,可以将下标直接作为键选择元素

db.集合名.update({查找},{$set:{"外键.0,1,2...内键":值}})  <插入>

db.集合名.update({查找},{$unset:{"外键.0,1,2...内键":1,0}})  <删除>

例子:
db.books.update({by:"tuorials point"},{$set:{"comment.0.comment":"123"}})

2).定位操作符$,统一修改

db.集合名.update({'外键.内键':"值"},{$set:{"外键.$.内键":"ok"}},{multi:true})

例子:
db.books.update({'comment.anme':"yang"},{$set:{"comment.$.comment":"ok"}},{multi:true})

注意:
目前学到的三个参数
update({查询},{修改},{multi:true})



原创粉丝点击