考虑到以下不好的模型,因为我对此完全陌生。
{
"uid": "some-id",
"database": {
"name": "nameOfDatabase",
"collection": [
{
"name": "nameOfCollection",
"fields": {
"0": "field_1",
"1": "field_2"
}
},
{
"name": "nameOfAnotherCollection",
"fields": {
"0": "field_1"
}
}
]
}
}
我有集合名称(即database.collection.name),我有一些字段要添加到它或从中删除(在database.collection.fields下有一些已存在的字段,我想添加新的或删除现有的。)
简而言之,当我拥有数据库名称和集合名称时,如何更新/删除"字段"。
我无法弄清楚如何在这种情况下使用位置运算符$。
使用mongoose更新
Model.update(conditions, updates, options, callback);
我不知道哪些是正确的conditions
和正确的updates
参数。
到目前为止,我没有成功使用下面的model.update
conditions = {
"uid": req.body.uid,
"database.name": "test",
"database.collection":{ $elemMatch:{"name":req.body.collection.name}}
};
updates = {
$set: {
"fields": req.body.collection.fields
}
};
---------------------------------------------------------
conditions = {
"uid": req.body.uid,
"database.name": "test",
"database.collection.$.name":req.body.collection.name
};
updates = {
$addToSet: {
"fields": req.body.collection.fields
}
};
我尝试了很多,但没有一个工作,因为我是全新的。 我在$ push,$ set,$ addToSet,什么不使用什么?之间感到困惑,怎么样?
原始模式应该如下所示,但对其进行查询变得越来越难。
{
"uid": "some-id",
"database": [
{ //array of database objects
"name": "nameOfDatabase",
"collection": [ //array of collection objects inside respective databases
{
"name": "nameOfCollection",
"fields": { //fields inside a this particular collection
"0": "field_1",
"1": "field_2"
}
}
]
}
]
}