繁体   English   中英

如何从数组中获取 object 值?

[英]How can I get an object value from inside an array?

我想要做的是获得一个数组内部的 object 值。 model是这样的:

_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。 我尝试了一种方法,但它返回给我的是整个用户 model,而不是 Client1 object。

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 object。

例子:

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

我该怎么做?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM