2016-11-11 4 views
0

Ich habe eine Sammlung wie.Fehler beim Schleifen pymongo Objekt

{ 
    "id" : 101, 
    "name" : "ragav", 
    "address" : "143 karnadaka", 
    "products" : [ 
        { 
         "id" : 2, 
         "name" : "AA", 
         "amount" : "150" 
        }, 
        { 
         "id" : 4, 
         "name" : "BB", 
         "amount" : "15" 
        }, 
        { 
         "id" : 6, 
         "name" : "CC", 
         "amount" : "210" 
        }, 

       ] 
} 

Ich muss einen Datensatz in dieser Sammlung basierend auf Produkt finden. Ich führe die folgende Abfrage aus.

Abfrage

db.Response.find(
        {"products.id":2}, 
       {"products.id.$":1,"id":1,"name":1,"address":1} 
      ) 

In meinem Mongo Terminal erhielt ich den Ausgang. Aber ich greife durch Python mit pymongo2.8, wenn ich tariere, um Pymongo-Objekt zu iterieren, einen solchen Fehler zu bekommen.

database error: Executor error: InternalError: ambiguous positional projection

Was ist der Grund für diesen Fehler? Wie es lösen?

Antwort

0

Wenn ein Positionsoperator in einer Projektion oder einem Update angezeigt wird und mehrere Array-Übereinstimmungen mit dem Dokument vorliegen, gibt MongoDB einen Fehler aus.

so dass im Grunde ist das Problem mit dem $ im products.id. $

und dies ist ein erwartetes Verhalten. Weitere Informationen und Beispiele finden Sie unter https://jira.mongodb.org/browse/SERVER-14662.