{"id":207338,"date":"2020-11-25T18:44:57","date_gmt":"2020-11-25T10:44:57","guid":{"rendered":"http:\/\/4563.org\/?p=207338"},"modified":"2020-11-25T18:44:57","modified_gmt":"2020-11-25T10:44:57","slug":"%e6%b1%82%e5%8a%a9-java-%e6%93%8d%e4%bd%9c-mongodb","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=207338","title":{"rendered":"[\u6c42\u52a9] Java \u64cd\u4f5c mongodb"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  [\u6c42\u52a9] Java \u64cd\u4f5c mongodb               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <span><i><\/i> 3<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\"> <\/p>\n<p>db.chat_message.aggregate([<\/p>\n<pre><code>{      $match: {          \"sessionId\":{$in: [\"1249264194773536859\"]},           \"channel\": 3,          \"senderType\": 2      }  },  {      $group: {          _id: {              sessionId: \"$sessionId\",              targetId: \"$targetId\"          },          count: { $sum: 1 }      }  },  {      $match: {          tcount: { $gt: 2 }      }  },  {      $group: {          _id: {              targetId: \"$_id.targetId\"          },          count: { $sum: 1}      }  },  {      $group: {          _id: null,          count: {$sum: 1}      }  } <\/code><\/pre>\n<p>])<\/p>\n<p>\u7b2c\u4e00\u6b21\u641e mongdb\uff0c\u8fd8\u662f\u8fd9\u79cd\u591a\u91cd\u5206\u7ec4\u7684\uff0c\u8981\u7528 java \u4ee3\u7801\u5b9e\u73b0\uff0c\u7f51\u4e0a\u627e\u4e86\u4e00\u4e9b\u6559\u7a0b\u770b\u4e86\uff0c\u4f46\u662f\u6700\u540e\u8fd8\u662f\u4e0d\u884c\uff0c\u6ca1\u6cd5\u4e86\u539a\u8138\u76ae\u6765\u6c42\u52a9<\/p>\n<\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>11<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"4328315\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : narmgalaxy <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \/\/ Requires official Java MongoDB Driver 3.6+<br \/>import com.mongodb.Block;<br \/>import com.mongodb.MongoClient;<br \/>import com.mongodb.MongoException;<br \/>import com.mongodb.client.MongoCollection;<br \/>import com.mongodb.client.MongoDatabase;<br \/>import java.util.Arrays;<br \/>import java.util.List;<br \/>import org.bson.BsonNull;<br \/>import org.bson.Document;<br \/>import org.bson.conversions.Bson;<\/p>\n<p>public class Program {<\/p>\n<p> public static void main(String[] args) {<\/p>\n<p> try (MongoClient client = new MongoClient(&#8220;localhost&#8221;, 27017)) {<\/p>\n<p> MongoDatabase database = client.getDatabase(&#8220;bijiduo&#8221;);<br \/> MongoCollection&lt;Document&gt; collection = database.getCollection(&#8220;docInfo&#8221;);<\/p>\n<p> \/\/ Created with Studio 3T, the IDE for MongoDB &#8211; https:\/\/studio3t.com\/<\/p>\n<p> Block&lt;Document&gt; processBlock = new Block&lt;Document&gt;() {<br \/> @Override<br \/> public void apply(final Document document) {<br \/> System.out.println(document);<br \/> }<br \/> };<\/p>\n<p> List&lt;? extends Bson&gt; pipeline = Arrays.asList(<br \/> new Document()<br \/> .append(&#8220;$match&#8221;, new Document()<br \/> .append(&#8220;sessionId&#8221;, new Document()<br \/> .append(&#8220;$in&#8221;, Arrays.asList(<br \/> &#8220;1249264194773536859&#8221;<br \/> )<br \/> )<br \/> )<br \/> .append(&#8220;channel&#8221;, 3.0)<br \/> .append(&#8220;senderType&#8221;, 2.0)<br \/> ), <br \/> new Document()<br \/> .append(&#8220;$group&#8221;, new Document()<br \/> .append(&#8220;_id&#8221;, new Document()<br \/> .append(&#8220;sessionId&#8221;, &#8220;$sessionId&#8221;)<br \/> .append(&#8220;targetId&#8221;, &#8220;$targetId&#8221;)<br \/> )<br \/> .append(&#8220;count&#8221;, new Document()<br \/> .append(&#8220;$sum&#8221;, 1.0)<br \/> )<br \/> ), <br \/> new Document()<br \/> .append(&#8220;$match&#8221;, new Document()<br \/> .append(&#8220;tcount&#8221;, new Document()<br \/>  .append(&#8220;$gt&#8221;, 2.0)<br \/> )<br \/> ), <br \/> new Document()<br \/> .append(&#8220;$group&#8221;, new Document()<br \/> .append(&#8220;_id&#8221;, new Document()<br \/> .append(&#8220;targetId&#8221;, &#8220;$_id.targetId&#8221;)<br \/> )<br \/> .append(&#8220;count&#8221;, new Document()<br \/> .append(&#8220;$sum&#8221;, 1.0)<br \/> )<br \/> ), <br \/> new Document()<br \/> .append(&#8220;$group&#8221;, new Document()<br \/> .append(&#8220;_id&#8221;, new BsonNull())<br \/> .append(&#8220;count&#8221;, new Document()<br \/> .append(&#8220;$sum&#8221;, 1.0)<br \/> )<br \/> )<br \/> );<\/p>\n<p> collection.aggregate(pipeline)<br \/> .allowDiskUse(false)<br \/> .forEach(processBlock);<\/p>\n<p> } catch (MongoException e) {<br \/> \/\/ handle MongoDB exception<br \/> }<br \/> }<\/p>\n<p>}                                                            <\/p><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328316\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : 0x9527 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             tcount: { $gt: 2 } \uff1f                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328317\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @0x9527 \u8fd9\u4e2a\u662f\u624b\u6296\uff0c\u5f04\u9519\u4e86\uff0c\u591a\u4e86\u4e2a t                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328318\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @narmgalaxy \u611f\u8c22                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328319\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @narmgalaxy <\/p>\n<p>\u5927\u4f6c \u4f60\u8fd9\u4e2a\u662f\u7528 studio 3T \u751f\u6210\u7684\u5417? \u683c\u5f0f\u597d\u50cf<\/p>\n<p>\u4f46\u662f\u6211\u8bb0\u5f97\u8fd9\u4e2a\u662f\u53ea\u80fd\u7528 SQL \u751f\u6210 Java \u4ee3\u7801\u5427? <br \/>\u548b\u7528 mongo shell \u751f\u6210 java \u4ee3\u7801\u554a?                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328320\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : narmgalaxy <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6211\u8fd9\u4e2a\u662f\u81ea\u52a8\u751f\u6210\u7684\u3002\u7528\u7684 studio 3t.                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328321\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : narmgalaxy <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @wushigejiajia01 \u4e0d\u662f\u597d\u50cf\uff0c\u8fd9\u4e2a\u5c31\u662f\u3002                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328322\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @narmgalaxy <br \/>\u597d\u5427 \u6211\u8bf4\u770b\u7740\u683c\u5f0f\u602a\u773c\u719f<\/p>\n<p>\u53ef\u662f \u6211\u7528\u7684\u7248\u672c\u597d\u50cf\u53ea\u6709\u4ece SQL \u751f\u6210 Java \u4ee3\u7801, \u6ca1\u6709\u4ece shell \u751f\u6210\u4ee3\u7801\u7684<\/p>\n<p>\u4f60\u8fd9\u4e2a\u662f\u548b\u5f04\u7684?<br \/>\u6211\u7684\u7248\u672c\u4e0d\u5bf9\u5417<br \/>\u6211\u7684\u662f 2019.2.1(\u8bd5\u7528\u7248)                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328323\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : narmgalaxy <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6211\u4e5f\u662f\u4e00\u6837\u7684\u7248\u672c\u3002<br \/>\u5728 aggreagate \u91cc\u64cd\u4f5c\uff0c                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328324\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : wushigejiajia01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @narmgalaxy <br \/>\u54c8\u54c8<br \/>\u6211\u81ea\u5df1\u7814\u7a76\u4e86\u4e0b, \u641e\u51fa\u6765\u4e86<br \/>\u6211\u5c31\u60f3\u7740\u8d76\u7d27\u8fc7\u6765\u56de\u590d\u4f60\u4e00\u4e0b, \u6ca1\u60f3\u5230\u4f60\u8fd9\u4e48\u5feb\u5c31\u56de\u590d\u4e86<\/p>\n<p>\u54c8\u54c8 \u611f\u8c22                                                            <\/p><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4328325\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : qinxi <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \/\/match1<br \/>final MatchOperation match = Aggregation.match(criteria);<br \/>\/\/group1<br \/>final GroupOperation group1 = Aggregation.group(&#8220;sessionId&#8221;,&#8221;targetId&#8221;).count().as(&#8220;count&#8221;);<br \/>\/\/match2<br \/>final MatchOperation match2 = Aggregation.match(new Criteria(&#8220;count&#8221;).gt(2));<\/p>\n<p>\/\/group2<br \/>Aggregation.group().count().as(&#8220;count&#8221;);<\/p>\n<p> final Aggregation aggregation = Aggregation.newAggregation(match1, group1,match2, group2);<\/p>\n<p> final Map uniqueMappedResult = mongoTemplate.aggregate(aggregation, UserTask.class, Map.class).getUniqueMappedResult();                                                            <\/p><\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>[\u6c42\u52a9] Java \u64cd\u4f5c mong&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/207338"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=207338"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/207338\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=207338"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=207338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}