如何追加数组 mongoDB

How to append in an array mongoDB

如何在搜索特定对象后在数组中追加内容,数据库如下所示:

{
    "_id": {
        "$oid": "608a0f3628588a3daca019c6"
    },
    "username": "paul",
    "password": "cacavaca",
    "question": "q1",
    "answer": "cutu",
    "friends": [mir],
    "groups": []
}
{
    "_id": {
        "$oid": "608a0f4328588a3daca019c7"
    },
    "username": "mir",
    "password": "123456",
    "question": "q1",
    "answer": "cutu",
    "friends": [],
    "groups": []
}

我想通过 用户名搜索对象:paul 并在朋友数组中附加 alex,我试过了,但不行工作环境:

MongoClient.connect(uri, function(err, db) {
        var dbc = db.db("chat");
        dbc.collection("accounts").find({username: { $eq: user}}).update( [
            {
              $push: {
                friends:alex
              }
            }

        ])
        db.close();
    });

正确的做法是:

var user = request.body.user;
var new_friend = request.body.new_friend;

MongoClient.connect(uri, function(err, db) {
        var dbc = db.db("chat");
        dbc.collection("accounts").update(
        {username: { $eq: user}},
            {
              $push: {
                friends:new_friend
              }
            }
        )
        db.close();
    });

我认为你应该像这样使用 updateOne() 而不是使用 .find() 方法:

MongoClient.connect(uri, function(err, db) {
    var dbc = db.db("chat");
    dbc.collection("accounts").updateOne({username: {$eq: user}}, {
       $push: {
           friends: alex
        }
    });
    db.close();
});

假设useralex是上面定义的变量。

此外,也许你只能写 {username: user} 而没有 $eq 但这取决于你的代码和逻辑。