我有一个复杂的对象,这是一个简化的版本,只是为了展示我想要做的事情......
books: [{
title: 'book 1',
authors: [
{ name: 'jim' },
{ name: 'bob' },
]
}, {
title: 'book 2',
authors: [
{ name: 'steve' },
{ name: 'joe' },
]
}];
好的,基本上我想做的就是返回没有作者的书籍清单。这不是实际的项目,我只是用它作为一个简单的例子,但我们只是说我想查询所有书籍,或者可能是200本书。在此列表中,我不希望每本书都包含所有作者,作者子文档中可能有数百个条目。
如果可能的话,我想将它们保持在一起,而不是仅使用引用。所以基本上,我可以在没有得到作者的情况下获得所有书籍吗?
答案 0 :(得分:3)
您可以通过向find
命令提供projection
argument来执行此操作:
db.bookshelves.insert({
"type": "wood",
"books": [
{
"title": "book 1",
"authors": [
{"name": "jim"},
{"name": "bob"}
]
},
{
"title": "book 2",
"authors": [
{"name": "steve"},
{"name": "joe"}
]
}
]
}
)
# Returns the whole document
db.bookshelves.find({"type": "wood"})
# Omits the "author" field of each book:
db.bookshelves.find({"type": "wood"}, {"books.authors": 0})