Getting document with max size of inner array in MongoDB -


नमूना मोंगो दस्तावेज़:

  {" _id ":" 128374 "," x ": [{" i ":" 83847575 "," y ": [{" i ":" 938 9 48 9 283 "," टी ":" 2014-04-11 टी 20: 46: 57+ 0000 "}" {"i": "938948 9 284", "t": "2014-04-11T20: 47: 57 + 0000"}]}, {"i": "83847576", "y": [ I ":" 238234 9 385 "," t ":" 2014-01-15T23: 43: 29 + 0000 "}, {" i ":" 9389489286 "," टी ":" 2014-04-11T20: 47: 57+ 0000 "}, {" i ":" 9389489286 "," t ":" 2014-04-11T20: 49: 57 + 0000 "}]}]}   

आप कैसे प्राप्त करें प्रति सरणी 'y' दस्तावेज़ की अधिकतम संख्या? मैं जिस समस्या को हल करने की कोशिश कर रहा हूं वह रिकॉर्ड प्राप्त करना है जिसमें अधिकतम संख्या है 'वाई' धन्यवाद!

निम्नलिखित मुझे 'वाई' की कुल संख्या देता है <"" $ "" {"$" "": "$ X": " $ X "}}, {" $ unwind ":" $ xy "}, {" $ group ": {_id: null, number: {$ sum: 1}}})

यदि आप संग्रह में दस्तावेज ढूंढना चाहते हैं जिसमें सबसे अधिक "y" तत्व हैं जो एकीकरण में ऐसा करने का तरीका है ढांचा इस तरह होगा:

  db.coll.aggregate ({$ unwind: "$ x"}, {$ परियोजना: {ysize: {$ size: "$ xy"}}} , {$ Group: {_ id: "$ _ id", numys: {$ sum: "$ ysize"}}}, {$ sort: {numys: -1}}, {$ limit: 1})   

यह प्रत्येक दस्तावेज़ में आंतरिक y arrays के आकार के प्रोजेक्ट का उपयोग करता है, और समूह उन्हें प्रत्येक दस्तावेज़ में कितने "y" तत्वों की गणना करने के लिए वापस जोड़ता है

सॉर्ट और सीमा जोड़ना आपको शीर्ष एक या शीर्ष एन को रखने की अनुमति देता है।

यह आपको पूरे दस्तावेज़ में कुल y तत्वों की संख्या से आदेश देता है। यदि आप सिर्फ यह जानना चाहते हैं कि कौन सा दस्तावेज़ में सबसे लंबे समय तक सरणी वाई है, तो यह भी आसान है, बस समूह को निकालें और ठीक करें:

  db.coll.aggregate ({$ unwind: "$ X"}, {$ project: {ysize: {$ size: "$ xy"}}}, {$ sort: {ysize: -1}}, {$ सीमा: 1})    

Comments

Popular posts from this blog

sonata admin - how to add ManyToOne property field in configureListfield in sonataAdmin -

sql - Return Function using Cursor -

sql server - How to use pivot in this table -