如何在Pymongo中查询列表
How to query list in Pymongo
我在 Python 中有此代码:
import datetime
import re
import pymongo
from datetime import timedelta, date
def daterange(d, d1):
for n in range(int ((d1 - d).days)):
yield d + timedelta(n)
#conect to db
uri = "mongodb://127.0.0.1:27017"
client = pymongo.MongoClient(uri)
database = client['db']
collection = database['currency']
d = input('Insert beginning date (yyyy-mm-dd): ')
d1 = input('Insert end date (yyyy-mm-dd): ')
#search db
item = collection.find_one({"date" : d})
item1 = collection.find_one({"date" : d1})
d = collection.find_one({})
d1 = collection.find_one({})
datas = item['date']
datas1 = item1['date']
#convert string to object
dataObject = datetime.datetime.strptime(datas, "%Y-%m-%d")
dataObject1 = datetime.datetime.strptime(datas1, "%Y-%m-%d")
#range
mylist = []
for single_date in daterange(dataObject, dataObject1):
mylist.append(single_date.strftime("%Y-%m-%d"))
print(single_date.strftime("%Y-%m-%d"))
print(mylist)
item = collection.find_one({"date" : mylist[0]})
print(item)
如果用户插入像 2018-05-07 这样的开始日期和像 2018-05-11 这样的结束日期,它将打印:
2018-05-07
2018-05-08
2018-05-09
2018-05-10
并且打印的日期将转到我的列表。
我想知道如何在我的 mongoDB 中找到我的列表中的日期,我可以一个一个地做,但如果用户插入更多日期,那将不起作用。
您可以使用 $in 运算符来查询数组中的所有值。您还需要迭代结果,因为 find()
调用 returns 游标:
for item in collection.find({"date" : {"$in": mylist}}):
print(item)
我在 Python 中有此代码:
import datetime
import re
import pymongo
from datetime import timedelta, date
def daterange(d, d1):
for n in range(int ((d1 - d).days)):
yield d + timedelta(n)
#conect to db
uri = "mongodb://127.0.0.1:27017"
client = pymongo.MongoClient(uri)
database = client['db']
collection = database['currency']
d = input('Insert beginning date (yyyy-mm-dd): ')
d1 = input('Insert end date (yyyy-mm-dd): ')
#search db
item = collection.find_one({"date" : d})
item1 = collection.find_one({"date" : d1})
d = collection.find_one({})
d1 = collection.find_one({})
datas = item['date']
datas1 = item1['date']
#convert string to object
dataObject = datetime.datetime.strptime(datas, "%Y-%m-%d")
dataObject1 = datetime.datetime.strptime(datas1, "%Y-%m-%d")
#range
mylist = []
for single_date in daterange(dataObject, dataObject1):
mylist.append(single_date.strftime("%Y-%m-%d"))
print(single_date.strftime("%Y-%m-%d"))
print(mylist)
item = collection.find_one({"date" : mylist[0]})
print(item)
如果用户插入像 2018-05-07 这样的开始日期和像 2018-05-11 这样的结束日期,它将打印:
2018-05-07
2018-05-08
2018-05-09
2018-05-10
并且打印的日期将转到我的列表。 我想知道如何在我的 mongoDB 中找到我的列表中的日期,我可以一个一个地做,但如果用户插入更多日期,那将不起作用。
您可以使用 $in 运算符来查询数组中的所有值。您还需要迭代结果,因为 find()
调用 returns 游标:
for item in collection.find({"date" : {"$in": mylist}}):
print(item)