妖比不上性感的骚 發表於 2020-3-14 15:19:00

mongodb 操作 Date字段类型 mongodb shell api

<p>一,环境</p>
<p>  php 7.2 + thinkphp 5</p>
<p>  mongodb 3.4</p>
<p>  </p>
<p>二,针对Date字段的操作</p>
<p>  mongodb shell:</p>
<p>  写入:</p>
<p>  <span class="nx">db<span class="p">.<span class="nx">students3<span class="p">.<span class="nx">insert<span class="p">([ <span class="p">{ <span class="s2">"_id" <span class="o">: <span class="mi">1<span class="p">, <span class="s2">"tests" <span class="o">: <span class="p">[ <span class="mi">95<span class="p">, <span class="mi">92<span class="p">, <span class="mi">90 <span class="p">], <span class="s2">"lastUpdate" <span class="o">: <span class="nx">ISODate<span class="p">(<span class="s2">"2019-01-01T00:00:00Z"<span class="p">) <span class="p">}, <span class="p">{ <span class="s2">"_id" <span class="o">: <span class="mi">2<span class="p">, <span class="s2">"tests" <span class="o">: <span class="p">[ <span class="mi">94<span class="p">, <span class="mi">88<span class="p">, <span class="mi">90 <span class="p">], <span class="s2">"lastUpdate" <span class="o">: <span class="nx">ISODate<span class="p">(<span class="s2">"2019-01-01T00:00:00Z"<span class="p">) <span class="p">}, <span class="p">{ <span class="s2">"_id" <span class="o">: <span class="mi">3<span class="p">, <span class="s2">"tests" <span class="o">: <span class="p">[ <span class="mi">70<span class="p">, <span class="mi">75<span class="p">, <span class="mi">82 <span class="p">], <span class="s2">"lastUpdate" <span class="o">: <span class="nx">ISODate<span class="p">(<span class="s2">"2019-01-01T00:00:00Z"<span class="p">) <span class="p">} <span class="p">]);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p>  查询:</p>
<p>  db.students3.find({"lastUpdate":{$gte:new Date('2019-01-01')}})</p>
<p>&nbsp;</p>
<p>三,PHP如何像操作时间戳那样直接在DB中查询Date字段类型呢?</p>
<p>  1,试了好多种方法:原来一直以为可以直接用date类型的串就可以直接查询,比较,然而没鸟用!!!</p>
<p>  例如 :</p>
<p>    $s = date('Y-m-d H:i:s',strtotime('2020-03-11'));</p>
<p>    $e = date('Y-m-d H:i:s',strtotime('2020-03-12'));</p>
<p>    $where['time'] = ['between',[$s,$e]]</p>
<p>    Db::connect('MONGO')-&gt;table('students3')-&gt;where($where)-&gt;select();</p>
<p>    这样是没有结构,mongo识别不了这样的时间字符串,不能像MYSQL那样可以直接比较date字段类型的。</p>
<p>  2,用php自的什么Datetime类型的也都没用,要用mongodb类库中的 MongoDB\BSON\UTCDateTime这种转化才可以</p>
<p>     $start= new \MongoDB\BSON\UTCDateTime(strtotime("2020-03-11 00:40:34")*1000);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$end = new \MongoDB\BSON\UTCDateTime(strtotime("2020-03-12 00:29:55")*1000);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$where['create_time'] = ['between',[$start,$end]];<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$count = Db::connect('MONGO')-&gt;table('students3')-&gt;where($where)-&gt;count();</p>
<p>四,总结,之前没用过mongodb,纠结尝试了好久才可以正常操作Date类型的字段。</p>
<p>  </p>

</div>
<div id="MySignature" role="contentinfo">
    PHP中常见的问题点,知识点,及盲点。<br><br>
来源:https://www.cnblogs.com/sblack/p/12492327.html
頁: [1]
查看完整版本: mongodb 操作 Date字段类型 mongodb shell api