【问题标题】:How can I get an object value from inside an array?如何从数组内部获取对象值?
【发布时间】:2023-01-05 00:36:09
【问题描述】:

我想做的是获取数组内部的对象值。 模型是这样的:

_id:630e2a2250283de03b2dc920
fullName: John
phone:"+1234..."
createdAt:2022-08-30T15:17:54.608+00:00
selectedClients:Array
   0:Object
     phone:"+4567..."
     fullName:"Client1"
     _id:630e2a8f8367a2aaac3343b4
     createdAt:2022-08-30T15:19:43.372+00:00
   1:Object
     phone:"+7890..."
     fullName:"Client2"
     _id:630e2b73d42ddc8d622e860f
     createdAt:2022-08-30T15:23:31.883+00:00
__v:0

所以我要找的是Client1。 我得到了用户 ID 和客户端 ID。 我尝试了一种方法,但它返回了整个用户模型,而不仅仅是 Client1 对象。

exports.removeTrustee = asyncHandler(async (req, res, next) => {
  const user_id = req.params.user_id.split("-")[1];
  const client_id = ObjectId(req.params.client_id.split("-")[1]);

  const client = await User.find({
     selectedClients: { $elemMatch: { _id: client_id } },
  });

所以基本上我想要的是只返回我作为参数放置的 client_id 对象。

例子:

phone:"+4567..."
fullName:"Client1"
_id:630e2a8f8367a2aaac3343b4
createdAt:2022-08-30T15:19:43.372+00:00

我该怎么做?

【问题讨论】:

    标签: javascript node.js mongoose


    【解决方案1】:

    您可以使用 $elemMatch 投影运算符将 s 之类的数组字段限制为单个匹配元素,但您不能使用 find 删除文档的 s 级别:

    const client = await User.find({}, {_id: 0, s: {$elemMatch: {_id: client_id}}});
    

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 2021-08-22
      • 2019-11-10
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多