如何使用 nodejs 中的 mongodb 更新代码中的特定元素?
{ "_id" : ObjectId("5867713194f9f71a78bd9931")}
。 任何人都可以给我一个解决方案吗?提前谢谢......
{ "_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" ] }
答案 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"}}
)