【发布时间】:2014-07-28 04:13:57
【问题描述】:
我有一个 texts 集合,其中的文档如下所示:
{
title: 'A title',
author: 'Author Name',
published: 1944,
languages: [
{
code: 'en',
text: 'A long english text by the author...'
},
{
code: 'da',
text: 'En lang dansk tekst skrevet af forfatteren...'
}
// + many more languages
]
}
并且想进行查询以检索标题、作者和出版日期以及给定语言的文本,所以我这样做:
texts.findOne(
{ title: titleArg, language.code: languageArg },
{ 'title': 1, 'author': 1, 'published': 1, 'languages.$': 1 } ...
但我想返回不带 mongodb 的 _id 字段的匹配语言元素。
如果我在投影中这样做:
{ '_id': 0, 'title': 1, 'author': 1, 'published': 1, 'languages.$': 1 }
我在没有主 _id 的情况下取回文档,但如果我这样做:
{ 'languages.$._id': 0, 'title': 1, 'author': 1, 'published': 1, 'languages.$': 1 }
或者这个:
{ 'languages._id': 0, 'title': 1, 'author': 1, 'published': 1, 'languages.$': 1 }
什么都不返回。
有谁知道如何创建一个返回数组中的元素并排除该元素中的某些字段的投影?
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework