【发布时间】:2021-02-07 00:57:16
【问题描述】:
我正在使用 Expressjs、Mongodb 和 Mongoose 开发服务器。我需要将一个元素(一个字符串)推入一个对象(一个朋友)内的“tweets”数组中,该数组又位于一个“用户”对象内的“朋友”数组内,该对象在“用户”中记录收藏。这是我在 Mongodb 集合中的文档的示例:
{
"loggedIn": true,
"_id": "5f91ef0ce75d3b1d40539da0",
"username": "username",
"email": "a@h.com",
"password": "$2a$10$9krWS9Kq5024lRTexqaweePrn8aughepqTkaj3oA48x0fJ2ajd79u",
"dateOfBirth": "2002-12-07",
"gender": "male",
"friends": [
{
"tweets": [],
"_id": "5f91effae75d3b1d40539da7",
"username": "Jonas"
},
],
"__v": 0
}
我需要先从“Users”数组中选择指定的用户名,然后访问该用户中的“friends”数组,然后选择正确的朋友对象,最后将推文推送到此数组中的 $position:0 上。我试图实现这一点,如这段代码所示,我可以使用给定的朋友用户名访问朋友对象
await Users.updateOne(
{ username: req.params.username },
{
$push: {
friends: {
$elemMatch: {
username: req.params.friendUsername,
},
},
},
}
);
现在的问题是如何访问 $elemMatch 中的“tweets”数组并将 $position: 0 处的 req.body.tweet 推入其中?
【问题讨论】:
标签: javascript database mongodb mongoose mongoose-schema