我正试图找到一个让我忙碌数日的问题的答案。我想在MongDB集合中找到或更新嵌入式文档(使用mongoose)。我有可能知道。你可以这样做:
User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});
这确实有效。但是,仅当您具有我不知道的特定docId时(嵌入的doc可以是数组的项目(x))。
我的问题是,这有可能吗?或者mongodb不让我们在没有提供Id的情况下找到嵌入式文档吗?
问候,Douwe。
答案 0 :(得分:0)
是的,你可以。 使用点表示法指定要查找的嵌入文档的属性。 假设你有一个像这样的文档的人的集合:
{
_id:123,
name:"john",
address: {
Street:"any",
zip:1234
}
}
然后你可以找到一个通过这样的地址字段查询的人:
db.persons.find("address.zip":1234, ...)
考虑一下,它不会只提供嵌入式文档,而是整个文档(本例中的人)