如何追加数组 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();
});
假设user
和alex
是上面定义的变量。
此外,也许你只能写 {username: user}
而没有 $eq
但这取决于你的代码和逻辑。
如何在搜索特定对象后在数组中追加内容,数据库如下所示:
{
"_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();
});
假设user
和alex
是上面定义的变量。
此外,也许你只能写 {username: user}
而没有 $eq
但这取决于你的代码和逻辑。