2016-11-11 2 views
0

У меня есть коллекция вроде.Ошибка при циклировании объекта pymongo

{ 
    "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" 
        }, 

       ] 
} 

Мне нужно найти запись в этой коллекции на основе продукта. Я выполняю следующий запрос.

Запрос

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

В моем Монго терминале я получил выход. Но я получаю доступ через python, используя pymongo2.8, когда я пытаюсь выполнить итерацию объекта pymongo, получив такую ​​ошибку.

database error: Executor error: InternalError: ambiguous positional projection

Какая причина для этой ошибки? Как это решить?

ответ

0

Если оператор позиционирования появляется в проекции или обновлении, и было несколько совпадений массива с документом, MongoDB выдаст ошибку.

поэтому в основном проблема с $ в products.id. $

и это ожидаемое поведение. пожалуйста, обратитесь к https://jira.mongodb.org/browse/SERVER-14662 за дополнительной информацией и примерами.

 Смежные вопросы

  • Нет связанных вопросов^_^