说真话很难吗 發表於 2019-7-16 16:13:00

Mongodb 笔记采坑

<p>1 比较 数字大小用的是字符串的话,需要也转为 字符串</p>
<p><img src="https://img2018.cnblogs.com/blog/893997/201907/893997-20190716161258707-994105305.png"></p>
<p>2 所有的类型</p>
<p>&nbsp;</p>
<table>
<thead>
<tr class="header"><th>Type</th><th>Number</th><th>Alias</th><th>Notes</th></tr>
</thead>
<tbody>
<tr class="odd">
<td>Double</td>
<td>1</td>
<td>“double”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>String</td>
<td>2</td>
<td>“string”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Object</td>
<td>3</td>
<td>“object”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>Array</td>
<td>4</td>
<td>“array”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Binary data</td>
<td>5</td>
<td>“binData”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>Undefined</td>
<td>6</td>
<td>“undefined”</td>
<td>Deprecated.</td>
</tr>
<tr class="odd">
<td>ObjectId</td>
<td>7</td>
<td>“objectId”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>Boolean</td>
<td>8</td>
<td>“bool”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Date</td>
<td>9</td>
<td>“date”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>Null</td>
<td>10</td>
<td>“null”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Regular Expression</td>
<td>11</td>
<td>“regex”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>DBPointer</td>
<td>12</td>
<td>“dbPointer”</td>
<td>Deprecated.</td>
</tr>
<tr class="odd">
<td>JavaScript</td>
<td>13</td>
<td>“javascript”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>Symbol</td>
<td>14</td>
<td>“symbol”</td>
<td>Deprecated.</td>
</tr>
<tr class="odd">
<td>JavaScript (with scope)</td>
<td>15</td>
<td>“javascriptWithScope”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>32-bit integer</td>
<td>16</td>
<td>“int”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Timestamp</td>
<td>17</td>
<td>“timestamp”</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>64-bit integer</td>
<td>18</td>
<td>“long”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Decimal128</td>
<td>19</td>
<td>“decimal”</td>
<td>New in version 3.4.</td>
</tr>
<tr class="even">
<td>Min key</td>
<td>-1</td>
<td>“minKey”</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Max key</td>
<td>127</td>
<td>“maxKey”<br><br></td>






































</tr>






































</tbody>





































</table>
<h2>3 启动服务命令</h2>
<p>nohup ./mongod --port 27071 --dbpath data/db&nbsp; --fork --logpath log/mongo.log</p>
<p>&nbsp;不加 --fork 关闭服务台自动关闭的会--fork 为了关闭客户端是不退出</p>
<p>但加了--fork就需要加 logpath, 否则 失败</p>
<p>3 mongodb 集群分片副本集搭建</p>
<p>临时关闭大内存页面的方法</p>
<p>echo never &gt;&gt; /sys/kernel/mm/transparent_hugepage/enabled<br>echo never &gt;&gt;/sys/kernel/mm/transparent_hugepage/defrag</p>
<p>下载 redhat 4.0<br>wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz</p>
<p>更新系统时间<br>/usr/sbin/ntpdate ntp1.aliyun.com</p>
<p><br>cd /opt</p>
<p>为目录创建超链接<br>ln -s mongodb-linux-x86_64-rhel70-4.0.10 mongodb</p>
<p>修改文件的组名和用户名,用户名在前<br>chown -R root.root mongodb<br> chown -R root.root /data/mongodb<br>查看用户组 groups<br>查看用户组 groups root (root:root)<br>为添加的用户指定相应的用户组<br># useradd -g root tt</p>
<p>ln -s mongodb-linux-x86_64-rhel70-4.0.10 mongodb</p>
<p><br>添加用户修改密码的方法<br>1、在root下添加用户用 adduser 命令<br> # 添加用户 admin<br> #sudo adduseradmin</p>
<p>2、添加用户登录密码<br># 为用户 admin 修改密码<br> #sudo passwd admin<br>然后输入密码就可以了<br>分类: Linux</p>
<p>覆盖文件的方法,多行的数据</p>
<p>## content<br>systemLog:<br>destination: file<br>logAppend: true<br>path: /data/mongodb/config/log/config.log<br> <br># Where and how to store data.<br>storage:<br>dbPath: /data/mongodb/config/data<br>journal:<br>    enabled: true<br># how the process runs<br>processManagement:<br>fork: true<br>pidFilePath: /data/mongodb/config/log/configsrv.pid<br> <br># network interfaces<br>net:<br>port: 21000<br>bindIp: localhost<br> <br>#operationProfiling:<br>replication:<br>    replSetName: config      <br> <br>sharding:<br>    clusterRole: configsvr</p>
<p>rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"192.168.150.129:21000"},{_id:1,host:"192.168.150.130:21000"},{_id:2,host:"192.168.150.131:21000"}]})</p>
<p>竟然 mongodb 一般放在了mongodb的目录下了</p>
<p><br>分配大内存方式启动 命令<br>对于一口气吃掉内存大半的MongoDB,我的配置是:</p>
<p># numactl --interleave=all mongod -f /etc/mongod.conf<br>1<br>  即分配所有的node供其使用,这也是官方推荐的用法。 <br>numastat 查看内存状态</p>
<p> yum install numactl </p>
<p>配置集群前需要先启动 mongodb的服务<br>numactl --interleave=all /opt/mongodb/bin/mongod -f /data/mongodb/config/mongo.conf</p>
<p>4.0变化,下面两个都去掉<br>启动服务是无法识别 rest=true,需要去掉才可以<br>不识别httpinterface 也要去掉 。。。。。<br>numactl --interleave=all /opt/mongodb/bin/mongo --host localhost --port 21000</p>
<p>启动后添加副本集连不上,我猜测是因为另外两个没有启动造成的,需要把另外两个也安装号才可以</p>
<p>rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"127.0.0.1:21000"},{_id:1,host:"127.0.0.1:31000"},{_id:2,host:"127.0.0.1:41000"}]})</p>
<p>&nbsp;</p>
<p>创建服务的顺序<br>先 config,然后 分片 shard,最后 mongos</p>
<p>因为机器数码的限制,目前3个机器也变成了一个<br>目前 <br> mongos 20000   30000 40000<br> config 21000 31000 41000<br> shard1 22000 32000 42000</p>
<p>开始配置 shard1EOF 输入后自动结束 记得 cat &gt;后面没有空格<br>cat &gt;/data/mongodb/shard1/mongo.conf &lt;&lt;"EOF"<br>dbpath=/data/mongodb/shard1/data<br>logpath=/data/mongodb/shard1/log/shard1.log<br>logappend=true<br>port=22001<br>fork=true<br>replSet=shard1ReplSet<br>shardsvr=true<br>journal=false</p>
<p>启动失败因为上次一场关闭了</p>
<p># find / -name mongod.lock<br>/data/mongodb/shard1/data/mongod.lock<br>/data/mongodb/config/data/mongod.lock</p>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre>      
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置时间和 基础特殊查询</span>
      <span style="color: rgba(0, 0, 255, 1)">if</span>(startdate==<span style="color: rgba(128, 0, 128, 1)">0</span>||enddate==<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">                        enddate = new Date().getTime();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">                        startdate = enddate = 24*7*60*60*1000;</span>
                        LocalDateTime now =<span style="color: rgba(0, 0, 0, 1)"> LocalDateTime.now();
                        LocalDateTime bef </span>= now.minusHours(<span style="color: rgba(128, 0, 128, 1)">24</span>*<span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)">);
                        enddate </span>= Date.<span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)">(now.atZone(ZoneId.systemDefault()).toInstant()).getTime();
                        startdate </span>= Date.<span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)">(bef.atZone(ZoneId.systemDefault()).toInstant()).getTime();
                  }

                  BasicDBObject condition </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BasicDBObject();
               
                  condition.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">aaaa</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$lte</span><span style="color: rgba(128, 0, 0, 1)">"</span>,enddate).append(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$gte</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,startdate));
                  condition.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">bbb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,statistic.getFloor());
                  condition.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">loadClass</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$in</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,getLoads(statistic.getLoadclasses())));

                  BasicDBObject resultFields</span>=<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BasicDBObject();
                  resultFields.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">timestamp</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);

                  resultFields.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">floor</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);

                  resultFields.put(Constants.map.</span><span style="color: rgba(0, 0, 255, 1)">get</span>(statistic.getDrivingsituation()), <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
                  Query query</span>=<span style="color: rgba(0, 0, 255, 1)">new</span> BasicQuery(condition.toJson(),resultFields.toJson());</pre>
</div>
<p>&nbsp;</p>
<p>查看当前目录下所有目录的占用大小<br>du -h --max-depth=1<br>                <br>查看文件大小 结果用MK这些单位来表示                <br>ls -alh</p>
<p>&nbsp;</p>
<p><br>后台启动默认数据库路径, 记得改端口 不能有--fork<br>nohup ./mongod --port 27071 --dbpath data/db &amp;</p>
<p><br>这句只适用于 自动安装的<br>sudo service mongod stop</p>
<p>&nbsp;</p>
<p>如果是配置不是 shard 使用命令会失败 ,因为不是 master/slave</p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>关闭服务的方法</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong> &gt; use admin;</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong>switched to db admin</strong></span><br><span style="color: rgba(255, 0, 0, 1)"><strong>&gt; db.shutdownServer();</strong></span></p>
<p>&nbsp;</p>
<h2>8&nbsp;</h2>
<p>添加新用户的root和sudo权限</p>
<p>新建用户:<br>useradd username</p>
<p>修改密码:</p>
<p>passwd username</p>
<p>根据提示重复输入两遍userpwd.</p>
<p>赋予sudo权限:</p>
<p>visudo</p>
<p>找到 root ALL=(ALL)ALL</p>
<p>在下面添加 username ALL=(ALL)ALL</p>
<p>赋予root权限,苏四日没作用<br>usermod -a -G root mary.lee</p>
<p><br>切换用户命令<br>su gene</p>
<p>&nbsp;</p>
<p>9 配置环境变量,将会非常简洁</p>
<p>vim /etc/profile<br># 内容<br>export MONGODB_HOME=/opt/mongodb<br>export PATH=$MONGODB_HOME/bin:$PATH<br># 使立即生效,在安装用户下(youknow)执行<br>source /etc/profile</p>
<h2>10&nbsp; 分片的副本原则,然后启动&nbsp;</h2>
<h2>&nbsp;</h2>
<p>只改4个文件, 副本的都不变,除了路径和端口</p>
<p>此时原则是,第一个分片副本是 <br>shard1 shard2 shard3 分别端口是22000 32000 42000<br>numactl --interleave=all mongod--config/data/mongodb/shard2/mongo.conf<br>numactl --interleave=all mongo localhost:32000<br>numactl --interleave=all mongod--config/data/mongodb/shard3/mongo.conf<br>numactl --interleave=all mongo localhost:42000</p>
<p>&nbsp;</p>
<p>mongo localhost:22000<br>#使用admin数据库<br>use admin<br>#定义副本集配置<br>config = {<br>_id : "shard1",<br>members : [<br>{_id : 0, host : "localhost:22000" },<br>{_id : 1, host : "localhost:32000" },<br>{_id : 2, host : "localhost:42000" }<br>]<br>}<br> <br> <br>#初始化副本集配置<br>rs.initiate(config);<br> <br> <br>#查看分区状态<br>rs.status();</p>
<p>&nbsp;</p>
<p>配置第二个副本集</p>
<p><br> <br>#查看分区状态<br>rs.status();</p>
<p>numactl --interleave=all mongod--config/data/mongodb/shard12/mongo.conf<br>numactl --interleave=all mongo localhost:22001<br>numactl --interleave=all mongod--config/data/mongodb/shard22/mongo.conf<br>numactl --interleave=all mongo localhost:32001<br>numactl --interleave=all mongod--config/data/mongodb/shard32/mongo.conf<br>numactl --interleave=all mongo localhost:42001</p>
<p><br>use admin<br>#定义副本集配置<br>config = {<br>_id : "shard2",<br>members : [<br>{_id : 3, host : "localhost:22001" },<br>{_id : 4, host : "localhost:32001" },<br>{_id : 5, host : "localhost:42001" }<br>]<br>}</p>
<p>记得mongo.conf配置再 data/mongodb/shard1/下面</p>
<p>&nbsp;</p>
<p>配置需要改3个地方才行</p>
<p>config = {<br>_id : "shard3",<br>members : [<br>{_id : 6, host : "localhost:22002" },<br>{_id : 7, host : "localhost:32002" },<br>{_id : 8, host : "localhost:42002" }<br>]<br>}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br>启动和查看config的 服务<br>numactl --interleave=all mongod--config/data/mongodb/config/mongo.conf<br>numactl --interleave=all mongo localhost:21000</p>
<p><br>启动和查看mongos的 服务<br>numactl --interleave=all mongod--config/data/mongodb/mongos/mongo.conf<br>numactl --interleave=all mongo localhost:20000</p>
<p>&nbsp;</p>
<p>配置mongos失败了</p>
<p>&nbsp;</p>
<p>systemLog:<br>destination: file<br>logAppend: true<br>path: /data/mongodb/mongos/log/mongos.log<br>processManagement:<br>fork: true<br>#pidFilePath: /data/mongodb/mongos/log/mongos.pid<br> <br># network interfaces<br>net:<br>port: 20000<br>bindIp: localhost<br>#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字<br>sharding:<br>   configDB: config/localhost:21000</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1 class="entry-title">PHP MongoDB Unrecognized option: sharding.configDB 解决方案</h1>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>内存剩余liunx命令查看</p>
<p>free -m</p>
<p><img src="https://img2018.cnblogs.com/blog/893997/201907/893997-20190729070459571-917877544.png"></p>
<p>&nbsp;</p>
<h2>11&nbsp; mongodb 的 存儲 下載文件到 數據庫中的方法,以及普通的 mongodb的 增刪改查的方法</h2>
<p>&nbsp;</p>
<p>import com.mongodb.Block;<br>import com.mongodb.DBObject;<br>import com.mongodb.client.gridfs.GridFSBucket;<br>import com.mongodb.client.gridfs.GridFSDownloadStream;<br>import com.mongodb.client.gridfs.GridFSFindIterable;<br>import com.mongodb.client.gridfs.model.GridFSFile;<br>import com.lvmoney.common.exceptions.BusinessException;<br>import com.lvmoney.common.exceptions.CommonException;<br>import com.lvmoney.mongo.service.BaseGridFsService;<br>import com.lvmoney.mongo.vo.BaseGridFsByteOutVo;<br>import com.lvmoney.mongo.vo.BaseGridFsOutVo;<br>import com.lvmoney.mongo.vo.BaseGridFsQueryVo;<br>import com.lvmoney.mongo.vo.BaseGridFsVo;<br>import org.slf4j.Logger;<br>import org.slf4j.LoggerFactory;<br>import org.apache.commons.io.IOUtils;<br>import org.apache.commons.lang3.StringUtils;<br>import org.bson.types.ObjectId;<br>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.data.mongodb.core.query.Criteria;<br>import org.springframework.data.mongodb.core.query.Query;<br>import org.springframework.data.mongodb.gridfs.GridFsResource;<br>import org.springframework.data.mongodb.gridfs.GridFsTemplate;<br>import org.springframework.stereotype.Service;<br>import org.springframework.web.multipart.MultipartFile;</p>
<p>import java.io.IOException;<br>import java.io.InputStream;<br>import java.util.ArrayList;<br>import java.util.List;</p>
<p>/**<br> * @describe:<br> * @author: lvmoney /xxxx科技有限公司<br> * @version:v1.0 2019年1月10日 上午11:54:42<br> */<br>@Service("frameBaseGridFsService")<br>public class BaseGridFsServiceImpl implements BaseGridFsService {</p>
<p>    private final static Logger logger = LoggerFactory.getLogger(BaseGridFsServiceImpl.class);<br>    @Autowired<br>    GridFsTemplate gridFsTemplate;<br>    @Autowired<br>    GridFSBucket gridFSBucket;</p>
<p>    @Override<br>    public BaseGridFsOutVo save(BaseGridFsVo baseGridFsVo) {<br>      long maxSize = baseGridFsVo.getMaxSize();<br>      MultipartFile file = baseGridFsVo.getFile();<br>      long fileSize = file.getSize();<br>      if (maxSize &lt; file.getSize()) {<br>            throw new BusinessException(CommonException.Proxy.GRIDFS_FILE_SIZE);<br>      }<br>      String baseFileName = baseGridFsVo.getFileName();<br>      String fileName = StringUtils.isBlank(baseFileName) ? file.getOriginalFilename() : baseFileName;<br>      // 获得文件类型<br>      String contentType = file.getContentType();<br>      // 获得文件输入流<br>      InputStream ins;<br>      try {<br>            ins = file.getInputStream();<br>            // 将文件存储到mongodb中,mongodb 将会返回这个文件的具体信息<br>            DBObject dbObj = baseGridFsVo.getDbObj();</p>
<p>            ObjectId objectId = gridFsTemplate.store(ins, fileName, contentType, dbObj);<br>            BaseGridFsOutVo result = new BaseGridFsOutVo();<br>            result.setFileName(fileName);<br>            result.setFileType(contentType);<br>            result.setMongoFileId(objectId.toString());<br>            result.setSize(fileSize);<br>            return result;<br>      } catch (IOException e) {<br>            logger.error("文件名为:{},文件类型为:{},保存文件报错:{}", fileName, contentType, e.getMessage());<br>            throw new BusinessException(CommonException.Proxy.GRIDFS_SAVE_ERROR);<br>      }</p>
<p><br>    }</p>
<p>    @Override<br>    public List&lt;BaseGridFsOutVo&gt; batchSave(List&lt;BaseGridFsVo&gt; baseGridFsVos) {<br>      List&lt;BaseGridFsOutVo&gt; result = new ArrayList&lt;&gt;();<br>      baseGridFsVos.forEach(baseGridFsService -&gt; {<br>            BaseGridFsOutVo baseGridFsOutVo = this.save(baseGridFsService);<br>            result.add(baseGridFsOutVo);<br>      });</p>
<p>      return result;<br>    }</p>
<p>    @Override<br>    public BaseGridFsByteOutVo getByMongoId(BaseGridFsQueryVo baseGridFsQueryVo) {<br>      String fileId = baseGridFsQueryVo.getMongoFileId();<br>      Query query = Query.query(Criteria.where("_id").is(fileId));<br>      GridFSFile gridFSFile = gridFsTemplate.findOne(query);<br>      if (gridFSFile == null) {<br>            throw new BusinessException(CommonException.Proxy.GRIDFS_QUERY_FILE_NOT_EXSIT);<br>      }<br>      String fileName = gridFSFile.getFilename();<br>      // 打开下载流对象<br>      GridFSDownloadStream gridFS = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());<br>      // 创建gridFsSource,用于获取流对象<br>      GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFS);<br>      try {<br>            BaseGridFsByteOutVo result = new BaseGridFsByteOutVo();<br>            result.setFileByte(IOUtils.toByteArray(gridFsResource.getInputStream()));<br>            result.setFileName(fileName);<br>            return result;<br>      } catch (IllegalStateException | IOException e) {<br>            logger.error("通过_id{}获得文件报错:{}", fileId, e.getMessage());<br>            throw new BusinessException(CommonException.Proxy.GRIDFS_QUERY_FILE_ERROR);<br>      }<br>    }</p>
<p>    @Override<br>    public List&lt;BaseGridFsByteOutVo&gt; batchGetByMongoId(List&lt;BaseGridFsQueryVo&gt; baseGridFsQueryVos) {<br>      Criteria criteria = null;<br>      String key = "_id";<br>      for (int i = 0; i &lt; baseGridFsQueryVos.size(); i++) {<br>            String fileId = baseGridFsQueryVos.get(i).getMongoFileId();<br>            if (i == 0) {<br>                criteria = Criteria.where(key).is(fileId);<br>            } else {<br>                criteria.and(key).is(fileId);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      GridFSFindIterable gridFSFiles = gridFsTemplate.find(query);<br>      List&lt;BaseGridFsByteOutVo&gt; result = new ArrayList&lt;&gt;();<br>      gridFSFiles.forEach((Block&lt;? super GridFSFile&gt;) gridFSFile -&gt; {<br>            String fileId = gridFSFile.getObjectId().toString();<br>            BaseGridFsByteOutVo baseGridFsByteOutVo = new BaseGridFsByteOutVo();<br>            GridFSDownloadStream gridFS = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());<br>            // 创建gridFsSource,用于获取流对象<br>            GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFS);<br>            try {<br>                String fileName = gridFSFile.getFilename();<br>                baseGridFsByteOutVo.setFileByte(IOUtils.toByteArray(gridFsResource.getInputStream()));<br>                baseGridFsByteOutVo.setFileName(fileName);<br>                result.add(baseGridFsByteOutVo);<br>            } catch (IllegalStateException | IOException e) {<br>                logger.error("通过_id{}获得文件报错:{}", fileId, e.getMessage());<br>                throw new BusinessException(CommonException.Proxy.GRIDFS_QUERY_FILE_ERROR);<br>            }<br>      });<br>      return result;<br>    }</p>
<p>    @Override<br>    public void deleteByMongoId(BaseGridFsQueryVo baseGridFsQueryVo) {<br>      gridFsTemplate.delete(new Query().addCriteria(Criteria.where("_id").is(baseGridFsQueryVo.getMongoFileId())));<br>    }<br>}</p>
<p>&nbsp;</p>
<p>import com.lvmoney.common.exceptions.BusinessException;<br>import com.lvmoney.common.exceptions.CommonException;<br>import com.lvmoney.mongo.service.BaseMongoService;<br>import com.lvmoney.mongo.vo.BaseMongoCollective;<br>import com.lvmoney.mongo.vo.BaseMongoVo;<br>import org.apache.commons.lang3.StringUtils;<br>import org.springframework.beans.factory.annotation.Autowired;<br>import org.springframework.data.domain.Sort;<br>import org.springframework.data.domain.Sort.Direction;<br>import org.springframework.data.mongodb.core.MongoTemplate;<br>import org.springframework.data.mongodb.core.query.Criteria;<br>import org.springframework.data.mongodb.core.query.Query;<br>import org.springframework.data.mongodb.core.query.Update;<br>import org.springframework.stereotype.Service;</p>
<p>import java.util.List;</p>
<p>/**<br> * @describe:<br> * @author: lvmoney /xxxx科技有限公司<br> * @version:v1.0 2019年1月10日 上午9:23:02<br> */<br>@Service("frameBaseMongoService")<br>public class BaseMongoServiceImpl implements BaseMongoService {</p>
<p>    @Autowired<br>    private MongoTemplate mongoTemplate;</p>
<p><br>    public void save(BaseMongoVo baseVo) {<br>      mongoTemplate.save(baseVo.getData());<br>    }</p>
<p>    /**<br>   * @param baseVo data mongo的mo collectionName 集合名<br>   * @param baseVo 2019年1月10日上午10:01:11<br>   * @describe:指定集合保存数据对象<br>   * @author: lvmoney /xxxx科技有限公司<br>   */<br>    public void saveByCollectionName(BaseMongoVo baseVo) {<br>      mongoTemplate.save(baseVo.getData(), baseVo.getCollectionName());<br>    }</p>
<p><br>    public void remove(BaseMongoVo baseVo) {</p>
<p>      mongoTemplate.remove(baseVo.getData());<br>    }</p>
<p><br>    public void removeByCollectionName(BaseMongoVo baseVo) {</p>
<p>      mongoTemplate.remove(baseVo.getData(), baseVo.getCollectionName());<br>    }</p>
<p><br>    public void removeById(BaseMongoVo baseVo) {<br>      Criteria criteria = Criteria.where(baseVo.getKey()).is(baseVo.getData());<br>      criteria.and(baseVo.getKey()).is(baseVo.getData());<br>      Query query = Query.query(criteria);<br>      mongoTemplate.remove(query, baseVo.getCollectionName());<br>    }</p>
<p><br>    public void updateFirst(BaseMongoCollective baseCollection) {<br>      String accordingKey = baseCollection.getKey();// 修改条件 key<br>      String[] updateKeys = baseCollection.getKeys();// 修改内容 key数组<br>      Object accordingValue = baseCollection.getData();// 修改条件 value<br>      Object[] updateValues = baseCollection.getDatas();// 修改内容 value数组<br>      Criteria criteria = Criteria.where(accordingKey).is(accordingValue);<br>      Query query = Query.query(criteria);<br>      Update update = new Update();<br>      for (int i = 0; i &lt; updateKeys.length; i++) {<br>            update.set(updateKeys, updateValues);<br>      }<br>      mongoTemplate.updateFirst(query, update, baseCollection.getCollectionName());<br>    }</p>
<p><br>    public void updateMulti(BaseMongoCollective baseCollection) {<br>      String accordingKey = baseCollection.getKey();<br>      Object accordingValue = baseCollection.getData();<br>      String[] updateKeys = baseCollection.getKeys();<br>      Object[] updateValues = baseCollection.getDatas();<br>      Criteria criteria = Criteria.where(accordingKey).is(accordingValue);<br>      Query query = Query.query(criteria);<br>      Update update = new Update();<br>      for (int i = 0; i &lt; updateKeys.length; i++) {<br>            update.set(updateKeys, updateValues);<br>      }<br>      mongoTemplate.updateMulti(query, update, baseCollection.getCollectionName());<br>    }</p>
<p><br>    public List&lt;?&gt; find(BaseMongoCollective baseCollection) {<br>      Object baseVo = baseCollection.getData();<br>      String[] findKeys = baseCollection.getKeys();<br>      Object[] findValues = baseCollection.getDatas();<br>      Criteria criteria = null;<br>      for (int i = 0; i &lt; findKeys.length; i++) {<br>            if (i == 0) {<br>                criteria = Criteria.where(findKeys).is(findValues);<br>            } else {<br>                criteria.and(findKeys).is(findValues);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      List&lt;?&gt; resultList = mongoTemplate.find(query, baseVo.getClass());<br>      return resultList;<br>    }</p>
<p><br>    public List&lt;?&gt; findByCollectionName(BaseMongoCollective baseCollection) {<br>      Object baseVo = baseCollection.getData();<br>      String[] findKeys = baseCollection.getKeys();<br>      Object[] findValues = baseCollection.getDatas();<br>      String collectionName = baseCollection.getCollectionName();<br>      Criteria criteria = null;<br>      for (int i = 0; i &lt; findKeys.length; i++) {<br>            if (i == 0) {<br>                criteria = Criteria.where(findKeys).is(findValues);<br>            } else {<br>                criteria.and(findKeys).is(findValues);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      List&lt;?&gt; resultList = mongoTemplate.find(query, baseVo.getClass(), collectionName);<br>      return resultList;<br>    }</p>
<p><br>    public List&lt;?&gt; sortFindByCollectionName(BaseMongoCollective baseCollection) {<br>      String sortType = baseCollection.getSortType().toLowerCase();<br>      if (StringUtils.isBlank(sortType)) {<br>            throw new BusinessException(CommonException.Proxy.MONGO_SORT_TYPE_IS_REQUIRED);<br>      }<br>      if (!"desc".equals(sortType) || !"asc".equals(sortType)) {<br>            throw new BusinessException(CommonException.Proxy.MONGO_SORT_TYPE_IS_ERROR);<br>      }<br>      Object baseVo = baseCollection.getData();<br>      String[] findKeys = baseCollection.getKeys();<br>      Object[] findValues = baseCollection.getDatas();<br>      String collectionName = baseCollection.getCollectionName();<br>      String sort = baseCollection.getSort();<br>      Criteria criteria = null;<br>      for (int i = 0; i &lt; findKeys.length; i++) {<br>            if (i == 0) {<br>                criteria = Criteria.where(findKeys).is(findValues);<br>            } else {<br>                criteria.and(findKeys).is(findValues);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      if (sortType.equals("desc")) {<br>            query.with(new Sort(Direction.DESC, sort));<br>      }<br>      if (sortType.equals("asc")) {<br>            query.with(new Sort(Direction.ASC, sort));<br>      }<br>      List&lt;?&gt; resultList = mongoTemplate.find(query, baseVo.getClass(), collectionName);<br>      return resultList;<br>    }</p>
<p><br>    public Object findOne(BaseMongoCollective baseCollection) {<br>      String[] findKeys = baseCollection.getKeys();<br>      Object[] findValues = baseCollection.getDatas();<br>      String collectionName = baseCollection.getCollectionName();<br>      Criteria criteria = null;<br>      for (int i = 0; i &lt; findKeys.length; i++) {<br>            if (i == 0) {<br>                criteria = Criteria.where(findKeys).is(findValues);<br>            } else {<br>                criteria.and(findKeys).is(findValues);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      return mongoTemplate.findOne(query, baseCollection.getData().getClass());<br>    }</p>
<p><br>    public Object findFirstOne(BaseMongoCollective baseCollection) {<br>      Object baseVo = baseCollection.getData();<br>      String[] findKeys = baseCollection.getKeys();<br>      Object[] findValues = baseCollection.getDatas();<br>      String collectionName = baseCollection.getCollectionName();<br>      Criteria criteria = null;<br>      for (int i = 0; i &lt; findKeys.length; i++) {<br>            if (i == 0) {<br>                criteria = Criteria.where(findKeys).is(findValues);<br>            } else {<br>                criteria.and(findKeys).is(findValues);<br>            }<br>      }<br>      Query query = Query.query(criteria);<br>      return mongoTemplate.findOne(query, baseVo.getClass(), collectionName);<br>    }</p>
<p><br>    public List&lt;?&gt; findAll(BaseMongoVo baseVo) {<br>      List&lt;?&gt; resultList = mongoTemplate.findAll(baseVo.getData().getClass());<br>      return resultList;<br>    }</p>
<p><br>    public List&lt;?&gt; findAllByCollectionName(BaseMongoVo baseVo) {<br>      List&lt;?&gt; resultList = mongoTemplate.findAll(baseVo.getData().getClass(), baseVo.getCollectionName());<br>      return resultList;<br>    }<br>}</p>
<h2>&nbsp;10</h2>
<p>&nbsp;</p>
<p>db.statistics.update({}, {$set: {createtime:new Date()}}, {multi: 1})<br>mongodb 添加字段方法,在客户端工具中操作<br>客户端工具用:Robo 3T 1.2.1</p>
<p>11&nbsp;<em id="__mceDel">集合创建索引方法</em></p>
<p>&nbsp;</p>
<p><em id="__mceDel">db.getCollection('blackList').ensureIndex({"customerId": 1, "description": -1}, {background: true})</em></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em>原生客户端</em></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(128, 0, 128, 1)">3.10</span><span style="color: rgba(0, 0, 0, 1)">.1使用了 java9 的版本,下面maven是普通的吧,没明白区别
org.mongodb.driver.sync.client
    </span>&lt;dependency&gt;
      &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
      &lt;artifactId&gt;mongodb-driver-sync&lt;/artifactId&gt;
      &lt;version&gt;<span style="color: rgba(128, 0, 128, 1)">3.10</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>&lt;/version&gt;
    &lt;/dependency&gt;
   

    &lt;dependency&gt;
      &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
      &lt;artifactId&gt;mongodb-driver&lt;/artifactId&gt;
      &lt;version&gt;<span style="color: rgba(128, 0, 128, 1)">3.10</span>.<span style="color: rgba(128, 0, 128, 1)">1</span>&lt;/version&gt;
    &lt;/dependency&gt;<span style="color: rgba(0, 0, 0, 1)">   
   
    目前在用项目的为3.</span><span style="color: rgba(128, 0, 128, 1)">8</span>
   

<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">最新的这样
import com.mongodb.ConnectionString;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;   

历史遗留的这样
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;

别的就一样了,工头的元素
mport com.mongodb.ServerAddress;

import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;

import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;

import com.mongodb.client.MongoCursor;
import </span><span style="color: rgba(0, 0, 255, 1)">static</span> com.mongodb.client.model.Filters.*<span style="color: rgba(0, 0, 0, 1)">;
import com.mongodb.client.result.DeleteResult;
import </span><span style="color: rgba(0, 0, 255, 1)">static</span> com.mongodb.client.model.Updates.*<span style="color: rgba(0, 0, 0, 1)">;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;


</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> 开始连接了
MongoClient mongoClient </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClients.create();
默认27017

如果是有host,看着像是集群
MongoClient mongoClient </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClients.create(
      MongoClientSettings.builder()
                .applyToClusterSettings(builder </span>-&gt;<span style="color: rgba(0, 0, 0, 1)">
                        builder.hosts(Arrays.asList(</span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hostOne</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))))
                .build());
如果有host和端口
MongoClient mongoClient </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClients.create(
      MongoClientSettings.builder()
                .applyToClusterSettings(builder </span>-&gt;<span style="color: rgba(0, 0, 0, 1)">
                        builder.hosts(Arrays.asList(</span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hostOne</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27018</span><span style="color: rgba(0, 0, 0, 1)">))))
                .build());
第四个连接方式是 使用字符串
MongoClient mongoClient </span>= MongoClients.create(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://hostOne:27017,hostTwo:27018</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);

</span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)"> 获取集合方法
MongoCollection</span>&lt;Document&gt; collection = database.getCollection(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">test</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);


</span><span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)"> 创建一个文档

{
   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MongoDB</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">type</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">database</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">count</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">versions</span><span style="color: rgba(128, 0, 0, 1)">"</span>: [ <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v3.2</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v3.0</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v2.6</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> ],
   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span> : { x : <span style="color: rgba(128, 0, 128, 1)">203</span>, y : <span style="color: rgba(128, 0, 128, 1)">102</span><span style="color: rgba(0, 0, 0, 1)"> }
}
Document doc </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> Document(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MongoDB</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
                .append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">type</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">database</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
                .append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">count</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">)
                .append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">versions</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Arrays.asList(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v3.2</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v3.0</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">v2.6</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                .append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">new</span> Document(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">203</span>).append(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">y</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">102</span><span style="color: rgba(0, 0, 0, 1)">));

</span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)"> 插入1条和多条
collection.insertOne(doc);

List</span>&lt;Document&gt; documents = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList&lt;Document&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; <span style="color: rgba(128, 0, 128, 1)">100</span>; i++<span style="color: rgba(0, 0, 0, 1)">) {
    documents.add(</span><span style="color: rgba(0, 0, 255, 1)">new</span> Document(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, i));
}
collection.insertMany(documents);


</span><span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)"> 打印出集合的数据的数量
System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(collection.countDocuments());


</span><span style="color: rgba(128, 0, 128, 1)">8</span><span style="color: rgba(0, 0, 0, 1)"> 查询
查询循环遍历出结果
MongoCursor</span>&lt;Document&gt; cursor =<span style="color: rgba(0, 0, 0, 1)"> collection.find().iterator();
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
    </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> (cursor.hasNext()) {
      System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(cursor.next().toJson());
    }
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
    cursor.close();
}

查询一条doc
myDoc </span>= collection.find(eq(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">71</span><span style="color: rgba(0, 0, 0, 1)">)).first();
System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(myDoc.toJson());
{ </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span> : { <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">5515836e58c7b4fbc756320b</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">71</span><span style="color: rgba(0, 0, 0, 1)"> }


查询所有复合条件的 document
Block</span>&lt;Document&gt; printBlock = <span style="color: rgba(0, 0, 255, 1)">new</span> Block&lt;Document&gt;<span style="color: rgba(0, 0, 0, 1)">() {
   @Override
   </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> apply(final Document document) {
         System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(document.toJson());
   }
};

collection.find(gt(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">)).forEach(printBlock);
查询条件哦大于小于
collection.find(and(gt(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">50</span>), lte(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">))).forEach(printBlock);



</span><span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)"> 更新 1条和更新多条
collection.updateOne(eq(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">10</span>), <span style="color: rgba(0, 0, 255, 1)">new</span> Document(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$set</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">new</span> Document(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">110</span><span style="color: rgba(0, 0, 0, 1)">)));

UpdateResult updateResult </span>= collection.updateMany(lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">100</span>), inc(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">));
System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(updateResult.getModifiedCount());

</span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)"> 删除一条和多条
collection.deleteOne(eq(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">110</span><span style="color: rgba(0, 0, 0, 1)">));


DeleteResult deleteResult </span>= collection.deleteMany(gte(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">));
System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(deleteResult.getDeletedCount());      
                </span></pre>
</div>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">15</span><span style="color: rgba(0, 0, 0, 1)"> 指定副本集连接
MongoClient mongoClient </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClients.create(
            MongoClientSettings.builder()
                  .applyToClusterSettings(builder </span>-&gt;<span style="color: rgba(0, 0, 0, 1)">
                            builder.hosts(Arrays.asList(
                                    </span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host1</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">),
                                    </span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host2</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">),
                                    </span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host3</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">))))
                  .build());
                  或者
    MongoClient mongoClient </span>= MongoClients.create(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">16</span><span style="color: rgba(0, 0, 0, 1)"> 如指定集群则指定的是mongos的ip和端口
MongoClient mongoClient </span>= MongoClients.create( <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://localhost:27017</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> );
                  
也可指定多个mongos
MongoClient mongoClient </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClients.create(
            MongoClientSettings.builder()
                  .applyToClusterSettings(builder </span>-&gt;<span style="color: rgba(0, 0, 0, 1)">
                            builder.hosts(Arrays.asList(
                                    </span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host1</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">),
                                    </span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host2</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">))))
                  .build());
                  </span><span style="color: rgba(128, 0, 128, 1)">17</span><span style="color: rgba(0, 0, 0, 1)"> 指定证书和ssl两种方法
                        MongoClient mongoClient </span>= MongoClients.create(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://user1:pwd1@host1/?authSource=db1&amp;ssl=true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);

                        String user; </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> the user name</span>
    String database; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> the name of the database in which the user is defined</span>
    <span style="color: rgba(0, 0, 255, 1)">char</span>[] password; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> the password as a character array
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ...</span>
   
    <span style="color: rgba(128, 0, 128, 1)">17</span> tsl /<span style="color: rgba(0, 0, 0, 1)">ssl的方法
   

    MongoCredential credential </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoCredential.createCredential(user, database, password);

    MongoClientSettings settings </span>=<span style="color: rgba(0, 0, 0, 1)"> MongoClientSettings.builder()
            .credential(credential)
            .applyToSslSettings(builder </span>-&gt; builder.enabled(<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">))
            .applyToClusterSettings(builder </span>-&gt;<span style="color: rgba(0, 0, 0, 1)">
                builder.hosts(Arrays.asList(</span><span style="color: rgba(0, 0, 255, 1)">new</span> ServerAddress(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">host1</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">27017</span><span style="color: rgba(0, 0, 0, 1)">))))
            .build();

    MongoClient mongoClient </span>= MongoClients.create(settings);</pre>
</div>
<p>&nbsp;</p>
<p>1 mongodb 普通语法介绍<br> 安装有普通版和免费集群层版<br> 插入多条数据<br> db.inventory.insertMany([<br>   // MongoDB adds the _id field with an ObjectId if _id is not present<br>   { item: "journal", qty: 25, status: "A",<br>       size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },<br>       size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }<br>]);<br>可以查询内嵌的数据<br>db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )<br>如果查询字段是数组,直接用 普通查询,就会匹配<br>db.inventory.find( { tags: "red" } )<br>精确匹配数组方法,连数组都写上<br>db.inventory.find( { tags: ["red", "blank"] } )<br>2 搭建免费层集群<br>1 登录 mongo的账号<br>2 选择 altias<br>3 建立项目和成员<br>4 建立集群 m0是免费的<br>https://docs.mongodb.com/manual/tutorial/atlas-free-tier-setup/<br>5 安全方面添加新用户<br>然后下载连接客户端, 建立连接地址,建立连接集群<br>运行项目<br>"C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe" "mongodb+srv://mycluster-ma4u7.mongodb.net/test" --username mongodbusername</p>
<p>3 更多命令<br>插入数据,创建索引<br>db.myNewCollection2.insertOne( { x: 1 } )<br>db.myNewCollection3.createIndex( { y: 1 } )</p>
<p>&nbsp;</p>
<table class="docutils" border="1">
<thead valign="bottom">
<tr class="row-odd"><th class="head">Type</th><th class="head">Number</th><th class="head">Alias</th><th class="head">Notes</th></tr>













</thead>
<tbody valign="top">
<tr class="row-even">
<td>Double</td>
<td>1</td>
<td>“double”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>String</td>
<td>2</td>
<td>“string”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Object</td>
<td>3</td>
<td>“object”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>Array</td>
<td>4</td>
<td>“array”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Binary data</td>
<td>5</td>
<td>“binData”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>Undefined</td>
<td>6</td>
<td>“undefined”</td>
<td>Deprecated.</td>













</tr>
<tr class="row-even">
<td>ObjectId</td>
<td>7</td>
<td>“objectId”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>Boolean</td>
<td>8</td>
<td>“bool”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Date</td>
<td>9</td>
<td>“date”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>Null</td>
<td>10</td>
<td>“null”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Regular Expression</td>
<td>11</td>
<td>“regex”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>DBPointer</td>
<td>12</td>
<td>“dbPointer”</td>
<td>Deprecated.</td>













</tr>
<tr class="row-even">
<td>JavaScript</td>
<td>13</td>
<td>“javascript”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>Symbol</td>
<td>14</td>
<td>“symbol”</td>
<td>Deprecated.</td>













</tr>
<tr class="row-even">
<td>JavaScript (with scope)</td>
<td>15</td>
<td>“javascriptWithScope”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>32-bit integer</td>
<td>16</td>
<td>“int”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Timestamp</td>
<td>17</td>
<td>“timestamp”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-odd">
<td>64-bit integer</td>
<td>18</td>
<td>“long”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Decimal128</td>
<td>19</td>
<td>“decimal”</td>
<td>New in version 3.4.</td>













</tr>
<tr class="row-odd">
<td>Min key</td>
<td>-1</td>
<td>“minKey”</td>
<td>&nbsp;</td>













</tr>
<tr class="row-even">
<td>Max key</td>
<td>127</td>
<td>“maxKey”</td>
<td>&nbsp;</td>













</tr>













</tbody>













</table>
<p>5 使用shell 命令<br>登录 端口 host 名 密码 指定数据库<br>mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015<br>可以连接一批副本集<br>mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"</p>
<p>&nbsp;</p>
<p>1 mongodb 导入数据<br> 检测 mongodb启动的方法 window的方法<br> tasklist 的确可用<br> tasklist /FI "IMAGENAME eq mongod.exe"<br> 在路径<br> https://docs.mongodb.com/guides/server/import/<br> 如果时linux使用<br> ps -e| grep 'mongod'</p>
<p> 导入的方法<br> mongoimport --db test --collection inventory ^<br>          --authenticationDatabase admin --username &lt;user&gt; --password &lt;password&gt; ^<br>          --drop --file ~\downloads\inventory.crud.json</p>
<p>2 mongodb统计的例子<br>分两个部分,先过滤$match,再$group分组统计数量<br>db.orders.aggregate([<br>   { $match: { status: "A" } },<br>   { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }<br>])</p>
<p>第二种统计是mapreduce,据说性能不咋样,看图</p>
<p><img src="https://img2018.cnblogs.com/blog/893997/201908/893997-20190818080200864-553438404.svg+xml"></p>
<p><img src="https://img2018.cnblogs.com/blog/893997/201908/893997-20190818080210762-643395820.svg+xml"></p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/893997/201908/893997-20190818080252446-737761251.png"></p>
<p>&nbsp;</p>
<p><br>db.orders.mapReduce(a,b,{query,out}),看图<br>第三种是distinct的方法,看图</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/893997/201908/893997-20190818080303771-639981303.png"></p>
<p>&nbsp;</p>
<p>注意从mongoDB 3.0开始ensureIndex被废弃,今后都仅仅是db.collection.createIndex的一个别名。</p>
<p>不确定,竟然不是 分开的 index<br>db.getCollection('singleride').ensureIndex({"startFloor": 1, "stopFloor": 1,"currentLoad":1,"timestamp":1}, {background: true});</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> 方法和数据重名导致找不到方法了
</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)"> emit的用户 子组件@xxx是父组件方法名,子组件通过 $emit来提交调用用的
</span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)"> 使用动态变量时出了很大的问题
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.$data]=<span style="color: rgba(0, 0, 0, 1)">
加上</span><span style="color: rgba(0, 0, 255, 1)">this</span>.$nextTick(()=&gt;<span style="color: rgba(0, 0, 0, 1)"> 会完全渲染,只出现最后一个也不行
变换思路直接改为
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.maxAmplitudeX=<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.maxAmplitudeY=<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.maxAmplitudeZ=<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">; 即可

      放到循环外也不行,
      这就是 </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> 和show的差距,

      不明白具体坑的原理但是 用了show 秒好</span></pre>
</div>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> 查询指定的列,去重,批量更新或插入,
如抛出线程中断导致更新失败的话不用管 Interrupted acquiring a permit to retrieve an item </span><span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> the pool,也可能是个bug

BasicDBObject queryCondition </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BasicDBObject();
      BasicDBObject result </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BasicDBObject();
      result.put(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceId</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);

      Query query </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BasicQuery(queryCondition.toJson(),result.toJson());
      List</span>&lt;String&gt; kpIsList = mongoTemplate.findDistinct(query,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceId</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kpis</span><span style="color: rgba(128, 0, 0, 1)">"</span>,String.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
      BulkOperations bo </span>= mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sensor</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(kpIsList!=<span style="color: rgba(0, 0, 255, 1)">null</span>&amp;&amp;!<span style="color: rgba(0, 0, 0, 1)">kpIsList.isEmpty()){
            </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (String deviceId : kpIsList){
                Query upQuery </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Query();
                upQuery.addCriteria(Criteria.</span><span style="color: rgba(0, 0, 255, 1)">where</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceId</span><span style="color: rgba(128, 0, 0, 1)">"</span>).<span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)">(deviceId));
                Update update </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Update();
                update.</span><span style="color: rgba(0, 0, 255, 1)">set</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceId</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,deviceId);
                update.</span><span style="color: rgba(0, 0, 255, 1)">set</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceType</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Smart Bin</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
                update.</span><span style="color: rgba(0, 0, 255, 1)">set</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">networkType</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Iot</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
                update.</span><span style="color: rgba(0, 0, 255, 1)">set</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lastUpdateTime</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Date());
                bo.upsert(upQuery,update);
            }
            BulkWriteResult result1 </span>=<span style="color: rgba(0, 0, 0, 1)"> bo.execute();
      }
    }</span></pre>
</div>
<p>&nbsp;</p>
<p>真实可用<br>./mongo --port 27017 -u wisx -p wisx --authenticationDatabase 数据库名</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">真实可用
.</span>/mongo --port <span style="color: rgba(128, 0, 128, 1)">27017</span> -u wisx -p wisx --<span style="color: rgba(0, 0, 0, 1)">authenticationDatabase liftdb

</span>/usr/local/mongodb/<span style="color: rgba(0, 0, 0, 1)">bin







db.createUser({user:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,pwd:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,roles:[{role:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userAdminAnyDatabase</span><span style="color: rgba(128, 0, 0, 1)">"</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>}],mechanisms:[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SCRAM-SHA-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]});

db.createUser({user:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wisx</span><span style="color: rgba(128, 0, 0, 1)">"</span>,pwd:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wisx</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,roles:[
    {role:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">readWrite</span><span style="color: rgba(128, 0, 0, 1)">"</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readdbnamedb</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">},
    {role:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userAdmin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readdbnamedb</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">},   
    {role:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dbAdmin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readdbnamedb</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
   ],mechanisms:[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MONGODB-CR</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]});

   
   db.createUser({
    user:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    pwd:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    roles:[{role:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">userAdminAnyDatabase</span><span style="color: rgba(128, 0, 0, 1)">'</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}]
})


db.createUser({
    user:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">wisx</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    pwd:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">wisx</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    roles:[{role:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readWrite</span><span style="color: rgba(128, 0, 0, 1)">'</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readdbnamedb</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}]
});


db.createUser({user:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,pwd:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin123</span><span style="color: rgba(128, 0, 0, 1)">"</span>,roles:[{role:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userAdminAnyDatabase</span><span style="color: rgba(128, 0, 0, 1)">"</span>,db:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>}],mechanisms:[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">SCRAM-SHA-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]});



</span>===============================<span style="color: rgba(0, 0, 0, 1)">》》》》》》》》》》》》》》》》》》


mongo </span>--port <span style="color: rgba(128, 0, 128, 1)">28015</span></pre>
</div>
<p>&nbsp;</p>
<p>mongodb 的导入导出<br>mongoexport --host mylocalip --port 27017 --username "user" --password "pwd" --collection colldemo --db mydb --out colldemo.json</p>
<p>./mongoimport --host mylocalip --port 27017 --username user --password "pwd" --collection colldemo --db mydb --file colldemo.json</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/genestart/p/11195579.html
頁: [1]
查看完整版本: Mongodb 笔记采坑