在MongoDB中查找没有_id的嵌入式文档

时间:2013-06-28 18:44:32

标签: mongodb mongoose

我正试图找到一个让我忙碌数日的问题的答案。我想在MongDB集合中找到或更新嵌入式文档(使用mongoose)。我有可能知道。你可以这样做:

User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});

这确实有效。但是,仅当您具有我不知道的特定docId时(嵌入的doc可以是数组的项目(x))。

我的问题是,这有可能吗?或者mongodb不让我们在没有提供Id的情况下找到嵌入式文档吗?

问候,Douwe。

1 个答案:

答案 0 :(得分:0)

是的,你可以。 使用点表示法指定要查找的嵌入文档的属性。 假设你有一个像这样的文档的人的集合:

{
  _id:123,
  name:"john",
  address: {
      Street:"any", 
      zip:1234
    }
}

然后你可以找到一个通过这样的地址字段查询的人:

db.persons.find("address.zip":1234, ...)

考虑一下,它不会只提供嵌入式文档,而是整个文档(本例中的人)