Filtrar por Data (Mês) em um campo ListField com vários DictFields

3 views
Skip to first unread message

Rogério Carrasqueira

unread,
Oct 23, 2018, 11:29:51 AM10/23/18
to MongoDB Brasil
Olá Pessoal!

Tudo bem? Estou precisando de uma ajuda com uma query no mongo para filtrar por contatos que fazem aniversário em um determinado mês. Ocorre que no modelo de dados o campo data aniversário é um campo customizados e colocamos ele numa ListField com vários dicionários de modo que o registro fica mais ou menos assim (estou usando o mongoengine para me conectar ao MongoDB, com Django/Python):

>>> contact = Contact.objects.filter(__raw__={'customs':{'$elemMatch':{'k':'data_de_nascimentoi','v': {'$eq': datetime(1980,1,6,0,0,0)}}}})[0]

>>> contact.customs #customs é o campo ListField

[{u'k': u'username', u'v': u''},{u'k': u'data_de_nascimentoi', u'v': datetime.datetime(1980, 1, 6, 0, 0)}] # Esses são os dicionários


Ocorre que tentando pegar uma determinada data, procurando de forma exata, consigo ter acesso normalmente aos registros, porém se tento fazer buscando por mês, não consigo obter nenhum resultado, conforme query abaixo:


>>> Contact.objects.filter(__raw__={'customs':{'$elemMatch':{'k':'data_de_nascimentoi','v': {'$eq': {'$month':1}}}}}) # buscando por todo mundo que nasceu em janeiro.

[]


Alguma dica que como poderia listar todo mundo que nasceu em janeiro, por exemplo?


Grande abraço!


Rogério Carrasqueira

Reply all
Reply to author
Forward
0 new messages