MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग डेटा MongoDB में एकत्रीकरण योग

मैंने आखिरकार इसका पता लगा लिया है। कुंजी MongoDB के लिए स्प्रिंग डेटा में गिनती () एकत्रीकरण फ़ंक्शन का उपयोग करना है, जो मूल मोंगो शेल में 1 से वेतन वृद्धि का अनुवाद करता है। यह मेरा अंतिम जुनीट टेस्ट है:

    /**
     * Test page posts count
     */
    @Test
    public void testPagePostsCount() throws Exception{
        MongoTemplate template = repository.getMongoTemplate();
        Page page = new Page();
        page.setPageId("2210");
        page.setUserId("azec");
        List<String> postList = new ArrayList<String>();
        postList.add("53eb1a560efbe048c7ea698d");
        postList.add("53eb1a6b0efbe048c7ea698e");
        page.setPostIds(postList);
        template.save(page);

        Aggregation agg = newAggregation(
            match(Criteria.where("_id").is("2210")),
            unwind("postIds"),
            group("_id").count().as("nPosts"),
            project("nPosts").and("_id").as("pageId")
        );

        AggregationResults<PostCount> results = template.aggregate(agg, "page", PostCount.class);
        List<PostCount> postCount = results.getMappedResults();
        Assert.assertTrue(!postCount.isEmpty());
        Assert.assertTrue(postCount.get(0).nPosts == 2);
        Assert.assertTrue(postCount.get(0).pageId.equals("2210"));
    }

    private class PostCount {
        String pageId;
        int nPosts;
    }

तो अंत में यह निम्नलिखित नेटिव एग्रीगेशन ऑपरेशन में बदल जाता है:

{
   "aggregate":"page",
   "pipeline":[
      {
         "$match":{
            "_id":"2210"
         }
      },
      {
         "$unwind":"$postIds"
      },
      {
         "$group":{
            "_id":"$_id",
            "nPosts":{
               "$sum":1
            }
         }
      },
      {
         "$project":{
            "nPosts":1,
            "pageId":"$_id"
         }
      }
   ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मोंगोडीबी क्वेरी में सख्त JSON $ date का उपयोग किया जा सकता है?

  2. MongoMapper के साथ अलग पूछताछ

  3. अपने आप में एक संग्रह की नकल करें

  4. मैक्सडिस्टेंस की मोंगोडब नेवला इकाई

  5. नेवला ऑटो वेतन वृद्धि