2016-04-26 11 views
0

Ich schreibe einen Code, in dem ich diese Art von Datenbank finden (ich verwende pymongo). Wie kann ich diese Arrays innerhalb des Wishlist-Feldes Python-Arrays zuordnen?Umwandlung mongodb Arrays in Python Arrays

Alternativ, wie kann ich meine Suche Datenbank für einen Wert innerhalb eines Arrays innerhalb des wishlist Feld. Z. B .: Ich möchte alle IDs finden, die, sagen wir, ["feldon","c15", "sp"] in ihrer wishlists

{ 
    "_id" : "david", 
    "password" : "azzzzzaa", 
    "url" : "url3", 
    "old_url" : "url3", 
    "new_url" : ["url1", "url2"], 
    "wishlist" : [ 
     ["all is dust", "mm4", "nm"], 
     ["feldon", "c15", "sp"], 
     ["feldon", "c15", "sp"], 
     ["jenara", "shards", "nm"], 
     ["rafiq", "shards", "nm"] 
    ] 
} 

Antwort

1

Sie haben distinct wenn Elemente in der Unterliste verwenden können und genau in derselben Reihenfolge sind.

db.collection.distinct("_id", {"wishlist": ["feldon", "c15", "sp"]}) 

Wenn nicht, müssen Sie die aggregate-Methode und die $redact Operator verwenden.

db.collection.aggregate([ 
    {"$redact": { 
     "$cond": [ 
      {"$setIsSubset": [ 
       [["feldon","c15", "sp"]], 
       "$wishlist" 
      ]}, 
      "$$KEEP", 
      "$$PRUNE" 
     ] 
    }}, 
    {"$group": { 
     "_id": None, 
     "ids": {"$push": "$_id"} 
    }} 
])