通过字段查找文档中的对象并在 MongoDB 中检索该对象

问题描述 投票:0回答:1

所以我使用 NodeJS 来查询 MongoDB (4.4)。我试图弄清楚如何在文档内的对象内搜索字段并检索该对象(或至少是

_id
)。我查询的字段是
created
文档中的
transactions
字段。桌子的样子如下。

enter image description here

我尝试过:

const result = await Model.findOne({}, { created: createdDate });

这不起作用。我从未使用过此类数据库,并且有点迷失。接下来我可以尝试什么?

node.js mongodb
1个回答
1
投票

也许是这样的:

选项 1:(查找)

db.collection.find({
  "transactions.created": "2022-12-21"
},
{
   transactions: {
      $elemMatch: {
        created: "2022-12-21"
      }
   }
})

解释:

  1. 找到基于“transaction.created”的文档。
  2. 仅投影匹配的“transaction.created”对象。

游乐场1

选项 2:(聚合)

db.collection.aggregate([
{
  $match: {
    "transactions.created": "2022-12-21"
  }
},
{
  $addFields: {
    transactions: {
     "$filter": {
       "input": "$transactions",
       "as": "t",
       "cond": {
         $eq: [
           "$$t.created",
           "2022-12-21"
         ]
        }
      }
     }
   }
  }
])

解释:

  1. 根据transaction.created查找文档
  2. 仅过滤匹配的交易创建对象。

游乐场2

为了获得最佳性能,需要在“transaction.created”字段上创建索引。

© www.soinside.com 2019 - 2024. All rights reserved.