2013-05-20 3 views
2

Это мои коллекции:Query MongoDB с интерфейсом REST

{ 
    "offset" : 0, 
    "rows": [ 
    { 
     "_id" : { "$oid" : "5199e109f456aab938b304de" }, 
     "type" : "cluster", 
     "id" : "1", 
     "vertices_transformation" : [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ], 
     "vertices" : [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ], 
     "v_attributes" : [[0.5,0.8,1], [0.6,0.9,1], [0.44,0.8,0.7],[0,1,0]] 
    }, 
    { 
     "_id" : { "$oid" : "5199d8f8f456aab938b304db" }, 
     "type" : "model", 
     "id" : "modello1", 
     "name" : "MODELLO 1", 
     "description" : "1 modello di prova", 
     "clusters" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ], 
     "clusters_tree" : [ 1, 2, 3, [ 4, 5, 6, 7 ], [ 8, 9, 10, 11 ] ] 
    } 
    ], 
    "total_rows" : 2, 
    "query" : { "type" : "cluster", "id" : 1 } , 
    "millis" : 1 
} 

Я хочу, чтобы фильтровать по типу и после того, как по идентификатору, это мой запрос:

http://xxxx/db/collections/?filter_type=cluster&filter_id=1 

Но результат этого запроса 0 строк, но если запрос только по типу, строка успешно возвращается. Почему мой запрос не работает с идентификатором?

Заранее благодарим за помощь.

+0

проблема решена. У меня такая же проблема. Я пытаюсь передать URL через браузер. и не может передать тело сообщения JSON. – maswadkar

ответ

0

Причиной является несоответствие типов:

// your record: 
"id" : "1" // id is a string 

// your query 
"id" : 1 // id is a number 

Видимо, интерфейс REST делает некоторые неявные преобразования на параметры запроса, которые выглядят как число. Однако я не знаю, как вы можете это предотвратить.

EDIT:httpie может отправить запрос как JSON в теле сообщения. Это работает:

$ http get 'http://127.0.0.1:28017/DB/COLLECTION/' 'filter_id=678' 
... 
{ 
    "filter_id": "678" // id is sent as a string 
} 
... 
"total_rows" : 1  // and now it matched a record 

Я не знаю, что клиент вы используете, но попробуйте отправить запрос в виде JSON в теле (но сделать его GET запрос, когда вы используете POST MongoDB вещи вы создание записи).

+0

Привет, спасибо за ваш ответ. Я решил, что проблема вставки id как int. – ilamaiolo