Resgatar vários documentos "embedados"

4 views
Skip to first unread message

Lucas Zerma

unread,
Sep 23, 2013, 4:03:20 PM9/23/13
to nosql-dis...@googlegroups.com
Boa Tarde galera,

Sou novo no mundo NoSQL e com isso vem algumas dificuldades.

A que eu estou tendo no momento e a seguinte:

Preciso resgatar todos os documentos que estão aninhados a um documento principal puxando somente os que coincidem com o mes informado no filtro (obs o mes está no documento aninhado).

O objeto:

{
    "_id" : ObjectId("52408b9a8a9fbb55368b4567"),
    "cod" : NumberLong(1),
    "cod_loja" : "13",
    "fornecedor" : [
        {
            "nome" : "XXXXX",
            "mes" : NumberLong(3),
            "aprovado" : 8337.56755
        },
        {
            "nome" : "AAAAAA",
            "mes" : NumberLong(9),
            "aprovado" : 1046.68
        },
        {
            "nome" : "XXXXX",
            "mes" : NumberLong(9),
            "aprovado" : 414.78
        },
        {
            "nome" : "CCCCCCCC",
            "mes" : NumberLong(9),
            "aprovado" : 473.8
        },
        {
            "nome" : "BBBBBBB",
            "mes" : NumberLong(9),
            "aprovado" : 164.16
        }
    ],
    "mes_anterior" : [
        {
            "mes" : NumberLong(9),
            "realizado" : 0,
            "aprovado" : 183605.3658499999,
            "cancelado" : 0
        }
    ],
    "total_cancelado" : 11975.09128,
    "total_realizado" : 592055.7002599995
}

O Comando:
db.aaaaa.find({"cod" : 1}, {"fornecedor" : {$elemMatch: {"mes" : 9} }})


O Resultado:

{
    "_id" : ObjectId("52408b9a8a9fbb55368b4567"),
    "fornecedor" : [
        {
          
             "nome" : "AAAAAA",
            "mes" : NumberLong(9),
            "aprovado" : 1046.68    ]
}


Por favor galera, me ajude.. UAHEHUAE to desesperado já!

Fico no aguardo....

John D. Rowell

unread,
Sep 25, 2013, 10:50:24 PM9/25/13
to nosql-dis...@googlegroups.com
Boa noite Lucas,

Vc não especificou mas parece estar usando MongoDB.

O $elemMatch só retorna o primeiro resultado que satistaz o filtro.

Quando trabalhamos com bancos de dados orientados a documento, o mais comum é retornar o documento inteiro, ou parte dele, como JSON, e depois fazer as manipulações no aplicativo. Assim, no seu caso, vc retornaria por exemplo o array "fornecedor" inteiro, e depois daria um parse no JSON e manipularia de acordo com as suas necessidades. Se vc puxar apenas um slice do documento preste atenção para não dar um "save" simples depois pois você poderá sobreescrever o documento todo com o slice.

-jd


--
Você está recebendo esta mensagem porque se inscreveu no grupo "NoSQL-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nosql-discussio...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Reply all
Reply to author
Forward
0 new messages