所以我使用 NodeJS 来查询 MongoDB (4.4)。我试图弄清楚如何在文档内的对象内搜索字段并检索该对象(或至少是
_id
)。我查询的字段是 created
文档中的 transactions
字段。表格如下所示。
我尝试过:
const result = await Model.findOne({}, { created: createdDate });
这不起作用。我从未使用过此类数据库,并且有点迷失。接下来我可以尝试什么?
也许是这样的:
选项 1:(查找)
db.collection.find({
"transactions.created": "2022-12-21"
},
{
transactions: {
$elemMatch: {
created: "2022-12-21"
}
}
})
解释:
选项 2:(聚合)
db.collection.aggregate([
{
$match: {
"transactions.created": "2022-12-21"
}
},
{
$addFields: {
transactions: {
"$filter": {
"input": "$transactions",
"as": "t",
"cond": {
$eq: [
"$$t.created",
"2022-12-21"
]
}
}
}
}
}
])
解释:
为了获得最佳性能,需要在“transaction.created”字段上创建索引。