2013-02-11 15 views
7
{ 
     "_id" : 160, 
     "info" : [ 
      { 
       'name': 'Serg', 
       'proff': 'hacker' 
      }, 
      null, 
     ] 
    } 

जैसा कि आप देख सकते हैं कि मेरे सरणी में शून्य तत्व है, मुझे एक सामान्य समाधान की आवश्यकता है जो जानकारी सरणी से शून्य तत्वों को हटा देगा।मोंगो सरणी

मैंने कोशिश की यह:

for doc in iter: 
    people.update({ '_id' : doc['_id']}, { '$pull' : { 'info' : 'null' }}) 

जहां iter दस्तावेजों का संग्रह है। और people एक संग्रह

मैं भी खोल में इस की कोशिश की है:

> db.people.findAndModify({ query: {}, update: {'$pull': {info:null} } }) 

लेकिन उपरोक्त उदाहरणों में से कोई भी अपने दस्तावेज़ों से इस अशक्त को नष्ट !!))

उत्तर

18

यह आपके लिए काम करना चाहिए। पायथन नल में कोई भी नहीं कहा जाता है।

for doc in iter: 
     people.update({'_id':doc[id]},{'$pull':{'info':None}}) 

null object in Python?

इसके अलावा मोंगो खोल में

, इस बाहर काम करना चाहिए:

db.people.update({_id:160},{$pull:{info:null}}) 

आप अद्यतन ऑपरेटर चाहते हैं, एक समय में एक से अधिक दस्तावेज़ अद्यतन करने के लिए, कि खींचने के लिए है एकाधिक दस्तावेजों से शून्य मूल्यों को बाहर निकालें, फिर आपको बहु: सही विकल्प प्रदान करना होगा। क्योंकि डिफ़ॉल्ट रूप से, क्वेरी arguemnt खाली यानी {} और mulit छोड़ दिया है, तो: सच प्रदान नहीं की है, अद्यतन ऑपरेटर पहले दस्तावेज़ पर काम करता है यह पता चलता है कि

db.people.update({},{$pull:{info:null}},{multi:true}) 
+0

आपको बहुत बहुत धन्यवाद !!! यह वही है जो मैं खोज रहा था। – Vor

संबंधित मुद्दे