Supongamos que tengo un modelo BlogPost
con cero a muchos documentos incrustados Comment
. ¿Puedo consultar y tener MongoDB devolver soloComment
objetos que coincidan con mis especificaciones de consulta?Consulta de MongoDB para devolver solo el documento incrustado
por ejemplo, db.blog_posts.find({"comment.submitter": "some_name"})
devuelve solo una lista de comentarios.
edit: un ejemplo:
import pymongo
connection = pymongo.Connection()
db = connection['dvds']
db['dvds'].insert({'title': "The Hitchhikers Guide to the Galaxy",
'episodes': [{'title': "Episode 1", 'desc': "..."},
{'title': "Episode 2", 'desc': "..."},
{'title': "Episode 3", 'desc': "..."},
{'title': "Episode 4", 'desc': "..."},
{'title': "Episode 5", 'desc': "..."},
{'title': "Episode 6", 'desc': "..."}]})
episode = db['dvds'].find_one({'episodes.title': "Episode 1"},
fields=['episodes'])
en este ejemplo, episode
es:
{u'_id': ObjectId('...'),
u'episodes': [{u'desc': u'...', u'title': u'Episode 1'},
{u'desc': u'...', u'title': u'Episode 2'},
{u'desc': u'...', u'title': u'Episode 3'},
{u'desc': u'...', u'title': u'Episode 4'},
{u'desc': u'...', u'title': u'Episode 5'},
{u'desc': u'...', u'title': u'Episode 6'}]}
pero sólo quiero:
{u'desc': u'...', u'title': u'Episode 1'}
"El futuro" de la respuesta aceptada es ahora el pasado, ya que el marco de agregación ya existe. Respondí cómo hacerlo. –