извините тем, кто не любит Python, мои образцы используют pymongo.
В mongodb empty используется как «подстановочный знак», как здесь (используя «подстановочный знак», я получаю такие же или более результаты):
>>> projects.find_one({'name': 'boodo3', '_id': ObjectId('4efa14c6b0ab584326000000')})
{u'_id': ObjectId('4efa14c6b0ab584326000000'), u'name': u'boodo3', u'updated_at': u'2011-12-28 13:47:09'}
>>> projects.find_one({'name': 'boodo3'})
{u'_id': ObjectId('4efa14c6b0ab584326000000'), u'name': u'boodo3', u'updated_at': u'2011-12-28 13:47:09'}
но если я запрашиваю "внутри" документа, подстановочные знаки больше не работают, как в следующем примере:
>>> testruns.find_one({'_parent': {'_coll': u'projects', '_id': '4efa14c6b0ab584326000000'}})
{u'_parent': {u'_coll': u'projects', u'_id': u'4efa14c6b0ab584326000000'}, u'_id': ObjectId('4efa167eb0ab584351000002'), u'name': u'11121617', u'updated_at': u'2011-12-27 19:03:26'}
>>> testruns.find_one({'_parent': {'_coll': u'projects'}})
>>> <no results here>
Я пробовал варианты с использованием $ in и $ nin, но пока безуспешно. Я надеюсь, что есть какой-то структурированный способ запроса документов (я имею в виду что-то кроме регулярных выражений). Я бы реструктурировал свои коллекции в случае необходимости, но я считаю, что плоские документы здесь не выход.
Значит ли это, что мне нужно перевести все запросы в точечную нотацию?
Или regex способ запрашивать документы в mongodb?
отказ от ответственности: я не собираюсь критиковать mongodb или что-либо еще. Это мое первое приложение, которое использует mongodb, и я хочу научиться запрашивать документы в mongodb.