Node.js 子文档中的简单查询失败

Node.js 子文档中的简单查询失败,node.js,mongodb,Node.js,Mongodb,我有一个mongo DB,里面有这样的对象: { "_id" : ObjectId("5d67e5b75f99ee4d8c996624"), "metadata" : { "ownerEmail" : "test@test.com", "firmwareVersion" : "01", "hardwareId" : "00001" }, "serialnumber" : "automate01", } 在javas

我有一个mongo DB,里面有这样的对象:

{
    "_id" : ObjectId("5d67e5b75f99ee4d8c996624"),
    "metadata" : {
        "ownerEmail" : "test@test.com",
        "firmwareVersion" : "01",
        "hardwareId" : "00001"
    },
    "serialnumber" : "automate01",
}
在javascript中,我使用这种调用来获取集合的所有对象,这是可行的:

  getAll(): Promise<Automate[]> {
    return this.database
      .collection('automates')
      .find({})
      .toArray();
  }
但当我想通过“ownerEmail”选择对象时,我会写下如下内容:

    getAllByUser(email: string): Promise<Automate[]> {
    return (
      this.database
        .collection('automates')
        .find({
          metadata: {
            ownerEmail: email
          }
        })
        .toArray()
    );
  }
这不算什么。。。那么,我做错了什么。我读到:
和我做的和描述的一样。有什么帮助吗?

您使用的是object,因此编写起来很简单

 getAllByUser(email: string): Promise<Automate[]> {
    return (
      this.database
        .collection('automates')
        .find({ "metadata.ownerEmail": email })
        .toArray()
    );
  }
变成

.find({ "metadata" :{ $elemMatch : { "ownerEmail": "test@test.com" }}})
可能重复的
.find({ "metadata" :{ $elemMatch : { "ownerEmail": "test@test.com" }}})