Find Jobs
Hire Freelancers

Create query to be used in mongoengine to query results by date in dictfield inside listfield

$10-30 USD

Completed
Posted over 5 years ago

$10-30 USD

Paid on delivery
Hi! This project is about a query to get results by date using mongoengine over mongodb to filter results by month, year and month and age So, I have a model in Mongoengine class Contact([login to view URL]): name = [login to view URL](max_length=255, verbose_name=_(u'Name')) email = [login to view URL](verbose_name=_(u'E-mail')) customs = [login to view URL]([login to view URL]()) In field customs I will a list of dictionaries like that: [login to view URL] = [{'k':'phone','v':'444-444-444'},{'birth_date':[login to view URL](1980,6,1)] I will have a lot of register with differents birth dates, but one date for each person. So I would like to do: 1 - Create a query that I can get all person that has birth day in a specific month 2 - Create a query that I can get any person that borns in a single year 3 - Create a query that I can get all persons that is under 18 year old What I will not accepet, query in mongodb and pymongo. I want a query using mongoengine running over python/Django, compatible with python 2.7 and Django 1.4 Let's game begins!
Project ID: 18033515

About the project

3 proposals
Remote project
Active 6 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
Awarded to:
User Avatar
Hi. After some research I find that: a) In your example "birth_date" is a [login to view URL] object, but this should be a [login to view URL] object, since MongoDB (BSON) don't have a type for date without time. Trying to store a date object in MongoDB results in an error saying date object cannot be encoded. b) Queries like [login to view URL](customs__birth_date__gte=[login to view URL](2010, 1, 1)) works (honestly I have no idea why this would work but sure it is as I tested). So: [login to view URL]( customs__birth_date__gte=[login to view URL](2010, 1, 1), customs__birth_date__lt=[login to view URL](2011, 1, 1), ) gives you all people with birth date greater than or equal to 20100101 and less than 20110101, which is exactly all people with birth year 2010. The same technique can be used to find out all people whose age is under 18: just filter birth date greater than [current date - 18 years]. So your requests (2) and (3) are fulfilled. c) Your request (1) is harder than it seems. This cannot be done by normal queries, but can be done using aggregations, since aggregation mechanism provides "$month" operator to extract month from a date. I haven't figure out how to do it yet, but it is possible. Please contact me if you want me to do more research and finish this for you. Thanks.
$30 USD in 1 day
5.0 (1 review)
1.0
1.0
3 freelancers are bidding on average $55 USD for this job
User Avatar
Hi, It's a great pleasure to see a job post related Django and MongoDB. Which is really rear Though most of the developer uses only relation database like MySql or PostgreSQL i am one of those wo use both relation and noSql. Looking at your query based requirements I hope i can help you here with my experience, Knock me to discusses more Regards
$111 USD in 3 days
4.9 (17 reviews)
4.3
4.3
User Avatar
Hi, I'd like to help you out with your project because I could say I understand what you're looking for with this script. if you're interested in my bid, send me a message and we could sort terms. best regards!
$25 USD in 2 days
4.8 (5 reviews)
2.3
2.3

About the client

Flag of BRAZIL
Rio de Janeiro, Brazil
0.0
0
Payment method verified
Member since Sep 21, 2014

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.