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

在MongoDB中查找没有_id的嵌入文档,mongodb,mongoose,Mongodb,Mongoose,我正试图找到一个问题的答案,这个问题让我忙了好几天。我想在MongDB集合中查找和/或更新嵌入式文档(使用mongoose)。我可能知道。您可以这样做: User.findOne({_id: id}, function(err, user) { var embeddedDoc = user.embeddedDocs.id('embeddedDocId'); }); { _id:123, name:"john", address: { Street:"any",

我正试图找到一个问题的答案,这个问题让我忙了好几天。我想在MongDB集合中查找和/或更新嵌入式文档(使用mongoose)。我可能知道。您可以这样做:

User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});
{
  _id:123,
  name:"john",
  address: {
      Street:"any", 
      zip:1234
    }
}
db.persons.find("address.zip":1234, ...)
这确实有效。但是,仅当您具有我不知道的特定docId时(嵌入的文档可以是数组的项(x))

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

你好,杜威。

是的,你可以。 使用点表示法指定要查找的嵌入文档的属性。 假设您有一个针对拥有以下文档的人员的集合:

User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});
{
  _id:123,
  name:"john",
  address: {
      Street:"any", 
      zip:1234
    }
}
db.persons.find("address.zip":1234, ...)
然后,您可以通过如下地址字段查找查询人员:

User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});
{
  _id:123,
  name:"john",
  address: {
      Street:"any", 
      zip:1234
    }
}
db.persons.find("address.zip":1234, ...)

只是考虑它不会只给你嵌入的DOC,但是整个文档(此例中的人)

你可以<代码>找到几乎任何东西…如果您提供了正确的查询。我不明白你在找什么。如果您没有嵌入的文档id,您将如何找到它?