Node.js 子文档中的简单查询失败
我有一个mongo DB,里面有这样的对象: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
{
"_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" }}})