使用nodejs中的mongodb更新标记中的特定元素

时间:2017-01-11 19:36:17

标签: node.js mongodb-query

如何使用 nodejs 中的 mongodb 更新代码中的特定元素?

  1. 我想更新具有名称的主题标签的第二个元素 叫waseem,
  2. 其ID是{ "_id" : ObjectId("5867713194f9f71a78bd9931")}
  3. 我想改变游戏"作为" Bootstrap"。
  4. 任何人都可以给我一个解决方案吗?提前谢谢......

    { "_id" : ObjectId("58676ed1fc38461d8c5ff424"), "name" : "viki", "age" : 30, "subject" : [ "c", "node.js", "java" ] }
    { "_id" : ObjectId("5867710d30b158057c896974"), "name" : "bv", "age" : 29, "subject" : [ "c++", "Android", "java" ] }
    { "_id" : ObjectId("5867713194f9f71a78bd9931"), "name" : "waseem", "age" : 30, "subject" : [ "c++", "gaming", "java" ] }
    

2 个答案:

答案 0 :(得分:0)

假设这是一个名为users的集合,你可以这样做。

mongo shell中:

db.users.update(
  { _id: ObjectId("5867713194f9f71a78bd9931") }, 
  { $set: { 'subject.1': 'gaming' } }
);

使用Node.js mongodb驱动程序:

var mondodb = require('mongodb');

var MongoClient = mongodb.MongoClient;

var url = 'mongodb://localhost:27017/test';

MongoClient.connect(url, function(err, db) {

  db.users.update(
    { _id: ObjectId("5867713194f9f71a78bd9931") }, 
    { $set: { 'subject.1': 'gaming' } }
  );

});

最后,使用mongoose,你可以做到:

var mongoose = require('mongoose');

var User = require('./path/to/your/user/model');

User.update(
    { _id: ObjectId("5867713194f9f71a78bd9931") }, 
    { $set: { 'subject.1': 'gaming' } }
  );

请注意,对象ID是唯一的,因此如果您已经拥有对象ID,则不需要指定名称。查看this question了解一些详情..

'subject.1'表示主题数组的第二个元素'。

答案 1 :(得分:0)

使用位置$运算符来标识数组中的元素,而不必知道它的位置值。

db.collection.update(
 {"name":"waseem", "_id" : ObjectId("5867713194f9f71a78bd9931"),"subject":"gaming"}, 
 { $set:{"subject.$":"Bootstrap"}}
)