Javascript 如何更新mongodb中所有对象的每个特定值?

Javascript 如何更新mongodb中所有对象的每个特定值?,javascript,html,mongodb,meteor,Javascript,Html,Mongodb,Meteor,因此,我有一个应用程序,其中包括给出一个估计的等待时间。我目前已将模式设置为根据集合中的项数估算waitTime值。这是我发现的 我遇到的问题是,每当有人从数据库中删除时,我需要能够将数据库中每个人的估计等待时间减少15 例如,假设数据库中目前有四个人。每个人的指定等待时间分别为15、30、45和60。然后假设数据库中的第二个人被删除(即,他们取消约会)。然后,跟踪第二个人的两个人需要将他们的估计等待时间更新为30分钟和45分钟 { "_id": "qntsyc9RZqkbHnSGM",

因此,我有一个应用程序,其中包括给出一个估计的等待时间。我目前已将模式设置为根据集合中的项数估算
waitTime
值。这是我发现的

我遇到的问题是,每当有人从数据库中删除时,我需要能够将数据库中每个人的估计等待时间减少15

例如,假设数据库中目前有四个人。每个人的指定等待时间分别为15、30、45和60。然后假设数据库中的第二个人被删除(即,他们取消约会)。然后,跟踪第二个人的两个人需要将他们的估计等待时间更新为30分钟和45分钟

{
    "_id": "qntsyc9RZqkbHnSGM",
    "Name": "John",
    "PhoneNumber": "5555555555",
    "createdAt": "2017-04-05T05:05:46.024Z",
    "currentStatus": "Waiting",
    "waitTime": 30 //this is the value I want to reduce for every object in the database
}
我该怎么做呢


另外,这基本上是在创建索引,但我在尝试为我的数据库创建索引时遇到了问题。我尝试过使用createIndex()和ensureIndex(),但没有成功(也许我只是做错了)。如果有一种方法可以为我的数据库创建索引,那么我也可以使用它。

MongoDBupdate操作是单一的。因此,您需要通过
{multi:true}
来更新多个记录。试试这个

db.dbname.update({},{ $inc: {'waitTime':-15} }, {multi:true});//Mongo query

如果要将所有这些值都减少15,则需要使用$inc运算符。它不包含负值,因此可以使用它来递增或递减

更新内容如下所示,只需更改集合的名称:

db.epace.update({}, {$inc:{waitTime: -15}}, {multi:true})

如果需要减少删除记录后的等待时间,则需要使用带负值的$inc运算符进行更新

db.queue.update({}, {$inc: {waitTime: -15 }},{ multi:true })
但这将更新所有文档,即使是第一个文档,因此您必须只更新删除后的文档,而不是上一个文档

你可以很容易地使用这些文档

db.queue.update(
{created_at:{$gt:timestamp}},
{$inc:{waitingTime:-15},{multi:true})

所以我尝试了这一点,但我在控制台中得到了这个错误:allow deny.js:494 Uncaught errorClass{error:403,原因:“不允许。不受信任的代码只能通过ID更新文档。”,详细信息:未定义,消息:“不允许。不受信任的代码只能通过ID更新文档。[403]”,错误类型:“Meteor.error…”您需要在服务器端执行此操作。