相关疑难解决方法(0)

从mongodb中的数组中的所有元素中删除一个字段

我在MongoDB中有以下文档(2.4.5)

{
    "_id" : 235399,
    "casts" : {
        "crew" : [ 
            {
                "_id" : 1186343,
                "withBase" : true,
                "department" : "Directing",
                "job" : "Director",
                "name" : "Connie Rasinski"
            },
            {
                "_id" : 86342,
                "withBase" : true
            }
        ]
    },
    "likes" : 0,
    "rating" : 0,
    "rating_count" : 0,
    "release_date" : "1955-11-11"
}
Run Code Online (Sandbox Code Playgroud)

我想从casts.crew中的数组元素中删除withBase.

我试过这个

db.coll.update({_id:235399},{$unset: {  "casts.crew.withBase" : 1 } },false,true)
Run Code Online (Sandbox Code Playgroud)

没有改变.

并试过这个..

db.coll.update({_id:235399},{$unset: {  "casts.crew" : { $elemMatch: { "withBase": 1 } } } },false,true)
Run Code Online (Sandbox Code Playgroud)

它从文档中删除了整个工作人员阵列.

有人可以提供正确的查询吗?

arrays mongodb

43
推荐指数
3
解决办法
3万
查看次数

使用MongoDB更新嵌套数组

我试图更新嵌套数组中的值,但无法使其工作.

我的目标是这样的

 {
    "_id": {
        "$oid": "1"
    },
    "array1": [
        {
            "_id": "12",
            "array2": [
                  {
                      "_id": "123",
                      "answeredBy": [],
                  },
                  {
                      "_id": "124",
                      "answeredBy": [],
                  }
             ],
         }
     ]
 }
Run Code Online (Sandbox Code Playgroud)

我需要将值推送到"answersBy"数组.

在下面的例子中,我尝试将"success"字符串推送到"123 _id"对象的"answersBy"数组,但它不起作用.

callback = function(err,value){
     if(err){
         res.send(err);
     }else{
         res.send(value);
     }
};
conditions = {
    "_id": 1,
    "array1._id": 12,
    "array2._id": 123
  };
updates = {
   $push: {
     "array2.$.answeredBy": "success"
   }
};
options = {
  upsert: true
};
Model.update(conditions, updates, options, callback);
Run Code Online (Sandbox Code Playgroud)

我找到了这个链接,但它的答案只说我应该使用类似对象的结构而不是数组.这不适用于我的情况.我真的需要我的对象嵌套在数组中

如果你能在这里帮助我会很棒.我花了好几个小时来搞清楚这一点.

先感谢您!

javascript mongoose mongodb node.js mongodb-query

30
推荐指数
2
解决办法
2万
查看次数

MongoDB - 更新嵌套数组中的对象

{
  "_id": "xPBc4By8FemDwTPqH",
  "u": {
    "_id": "6PoZawHZcQz4Gwzcv",
    "username": "michael"
  },
  "friends": [
    {
      "u": {
        "_id": "eGqDjAjjtYADbuSnn",
        "username": "michael",
        "name": "michael"
      }
    },
    {
      "u": {
        "_id": "k4gKCGwYryXDMMHvs",
        "username": "joyce",
        "name": "joyce"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想更新"friends.u.username"的名称:"michael"的名字是"你好",我需要怎么做.

updates mongodb

25
推荐指数
2
解决办法
3万
查看次数

Mongoose update'不能使用part(..)来遍历元素

我有这个非常烦人的问题,我无法使用mongoose更新任何东西.使用它真的很令人沮丧,文档根本没有帮助.

我有这个架构:

var userSchema = mongoose.Schema({

    local            : {
        email        : String,
        password     : String,
    },
    devices : [{
      id : String,
      name : String
    }]
});
Run Code Online (Sandbox Code Playgroud)

这是我想在数组中添加设备的代码devices:

function updateDeviceList(user, deviceID, deviceName)
{
  User.update({ 'local.email' : user}, 
  { $set: {'devices.id' : deviceID, 'devices.name' : deviceName}}, 
  function(err, response)
  {
    if(err)
    {
      console.log("Update device error", err);
    }
    else {
      console.log("Update device OK");
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

此时我收到错误: errmsg: 'cannot use the part (devices of devices.id) to traverse the element ({devices: []})' …

mongoose mongodb node.js

21
推荐指数
2
解决办法
3万
查看次数

mongodb位置操作员错误

我有这样的对象

{
    "_id" : ObjectId("5742be02289512cf98bf63e3"),
    "name" : "test1",
    "name" : "test1",
    "attributes" : [ 
        {
            "name" : "x",
            "color" : "0xd79c9c",
            "_id" : ObjectId("5742be02289512cf98bf63e8")
        }, 
        {
            "name" : "y",
            "color" : "0xd79c9c",
            "_id" : ObjectId("5742be02289512cf98bf63e7")
        }, 
        {
            "name" : "z",
            "color" : "0xd79c9c",
            "_id" : ObjectId("5742be02289512cf98bf63e6")
        }
    ],
    "__v" : 6
}
Run Code Online (Sandbox Code Playgroud)

我想更新所有文档,并为每个属性设置新字段.所以我想运行单个查询,一次更新所有文档.我想,这个查询会做到这一点

db.spaces.update({}, { $set: { "attributes.0.weight": 2 } }, {multi: true})
Run Code Online (Sandbox Code Playgroud)

但是当我运行此查询时,我收到错误.

"code":16837,
"errmsg":"位置运算符未找到查询所需的匹配.Unexontded update:attributes.$.weight"

所以我不明白为什么.请帮忙

arrays updates mongodb

11
推荐指数
2
解决办法
2万
查看次数

Mongoose 通过 id 更新数组中的项目

在我使用 mongoose 的节点 js 项目中,我试图更新文档中的数组项。
我有一个users架构,里面有一个notifications数组。每个用户都有一个_id,每个通知项都有一个_id

如何通过用户 ID 和通知 ID 更新通知?

用户架构:

const schema = mongoose.Schema({
  notifications: [{
    id: { type: mongoose.Schema.ObjectId },
    title: { type: String },
    body: { type: String },
    isRead: { type: Boolean, default: false },
    date: { type: Date }
  }],
  token: { type: String },
  isActive: { type: Boolean, default: false }
}, { timestamps: {} }) 
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止尝试过的:

exports.updateNotification = (req, res) => {

  // Note: …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

9
推荐指数
1
解决办法
8855
查看次数

MongoDB更新了多个数组记录

我最近开始使用MongoDB,我有一个关于更新文档中的数组的问题.我有这样的结构:

{
"_id" : ObjectId(),
"post" : "",
"comments" : [
        {
                "user" : "test",
                "avatar" : "/static/avatars/asd.jpg",
                "text" : "....."
        }
        {
                "user" : "test",
                "avatar" : "/static/avatars/asd.jpg",
                "text" : "....."
        }
        {
                "user" : "test",
                "avatar" : "/static/avatars/asd.jpg",
                "text" : "....."
        }
        ...
   ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行以下查询:

update({"comments.user":"test"},{$set:{"comments.$.avatar": "new_avatar.jpg"}},false,true)
Run Code Online (Sandbox Code Playgroud)

问题是它更新了所有文档,但它只更新了每个文档中的第一个数组元素.有没有办法更新所有数组元素或我应该尝试手动执行?谢谢.

arrays mongodb

8
推荐指数
2
解决办法
2万
查看次数

更新/删除MongoDB集合中的子文档

注意:请使用mongodb shell执行代码.

假设我有一份学生证件,如下所示

{
    "_id" : 4,
"grades" : [
    {
        "grade" : 80,
        "mean" : 75,
        "std" : 8
    },
    {
        "grade" : 85,
        "mean" : 90,
        "std" : 5
    },
    {
        "grade" : 85,
        "mean" : 90,
        "std" : 5
    },
    {
        "grade" : 85,
        "mean" : 95,
        "std" : 6
    },
    {
        "grade" : 90,
        "mean" : 85,
        "std" : 5
    }
]
}
Run Code Online (Sandbox Code Playgroud)

我们有两个问题:

问题1:假设你想用_id = 4 && grades.grade = 85 && grades.std = …

mongodb mongodb-query mongodb-update

6
推荐指数
1
解决办法
6542
查看次数

使用NodeJS,MongoDB和Monk更新数组项

我有这样的数据集:

{ 
  name : 'Doc Name',
  photos: [
      {
        name: 'photo1',
        url: 'http://.....'
      },
      {
        name: 'photo2',
        url: 'http://......'
      }
   ],
   etc ...
Run Code Online (Sandbox Code Playgroud)

使用Monk https://github.com/LearnBoost/monk如何更新photo2?我可以使用索引,因为我正在迭代字段.

我下面的当前尝试给了我一个错误,我不能为JSON选择器使用变量(如在索引中).

collection.update({_id: data._id}, {photos[i].data: filename}, function(err, updatedata) {

            });
Run Code Online (Sandbox Code Playgroud)

mongodb node.js mongoskin

5
推荐指数
1
解决办法
1万
查看次数

如何将mongodb文档中的所有数组元素更改为某个值?

假设我有以下文件

{
   _id: ObjectId("5234cc89687ea597eabee675"),
   code: "xyz",
   tags: [ "school", "book", "bag", "headphone", "appliance" ],
   qty: [
          { size: "S", num: 10, color: "blue" },
          { size: "M", num: 45, color: "blue" },
          { size: "L", num: 100, color: "green" }
        ]
}

{
   _id: ObjectId("5234cc8a687ea597eabee676"),
   code: "abc",
   tags: [ "appliance", "school", "book" ],
   qty: [
          { size: "6", num: 100, color: "green" },
          { size: "6", num: 50, color: "blue" },
          { size: "8", num: 100, color: "brown" }
        ] …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js mongodb-query

4
推荐指数
1
解决办法
522
查看次数