草庐IT

node.js - Mongodb:更新变量字段名称

我想向数据库中的对象添加一个带有变量名称的新字段:意思是,我不知道该字段的名称,但它保存在变量“newFieldName”中。所以我想做的基本上是这样的:varnewFieldName="world";db.bios.update({_id:3},{$set:{"hello."+newFieldName:"AmazingGrace"}})更新后,我希望对象“hello”有一个值为“AmazingGrace”的字段“world”。但这甚至不能编译,更不用说工作了。我该怎么做? 最佳答案 你可以使用一个中间对象:varupdate={$

python - Pymongo 多更新查询

我有以下查询DB_HOST='127.0.0.1'COLLECTION='scraper'db=pymongo.MongoClient(DB_HOST)[COLLECTION]['scrap']db.update({'indice':0,'thread_id':{'$in':list_to_update}},{'updated':'yes'},multi=True)其中list_to_update是一个thread_id列表,我想在其中插入字段“更新”到"is"我收到以下错误pymongo.errors.OperationFailure:multiupdateonlyworkswith

ruby-on-rails - update_attributes 始终返回 true,即使 nested_attributes 无效

我有2个带有嵌套数据的模型:classGoodtenderincludeMongoid::DocumentincludeMongoid::Timestampsfield:namefield:countreferences_many(:offerprices,:autosave=>true)accepts_nested_attributes_for:offerprices,:allow_destroy=>true,:reject_if=>:all_blankvalidates_presence_of:name,:message=>"Invalid"validates_numericali

c# - MongoDB C# 驱动程序 - 无需设置/替换即可更新

我正在与另一个应用程序共享的MongoDB数据库通信,该数据库使用我的应用程序不使用或不关心的某些字段。在我的整个代码中,我使用Update.Replace来更新对象。问题是它将数据库中的整个文档替换为我的POCO对象中的文档,导致其他应用程序使用的属性被删除。我可以执行Update.Set,但我必须多次使用它。Update.Replace非常方便,因为它会自动(通过反射)将POCO对象转换为BsonDocument。如何自动生成Update.Set以便我不必为每个成员调用它? 最佳答案 原来我必须进行额外的网络调用才能获取整个文档

ruby-on-rails - mongoid update_attributes 改变数据类型

我正在创建一个简单的Rails应用程序来修改现有mongo数据库中的数据。我正在使用mongoid进行交互,并且可以很好地读取/销毁对象。问题是我的mongo文档有一个“节点”,它是一堆键值对,根据记录的不同而有所不同。当我像这样加载记录时:MongoObject.find(BSON::ObjectId('ABC1234567890'))=>#11,"id"=>"logIns"}>我正在使用标准Rails表单来更新值,因此发布数据如下所示:{"commit"=>"Edit","utf8"=>"✓","id"=>"ABC1234567890","mongo_object"=>{"node

performance - "nscanned"查询上的 "update"值非常高 - 似乎高于所有索引中所有条目的总和

我在偶尔的更新查询中得到非常高的“nscanned”数字,而“nscannedObjects”相对较低。我从mongodb日志中获取这些数字,作为慢速查询自动记录的一部分(这些更新需要100毫秒到500毫秒之间的任何时间)。更新后的集合有198K个项目,大小刚刚超过100MB。它有许多不同的字段(超过30个),以及这些字段及其组合的31个索引。这是来自MongoDB.log的完整条目-包括查询和结果:2014-09-22T11:55:22.507+0000[conn45755]updatemydatabase.mycollectionquery:{_id:ObjectId('53d13

javascript - Mongoose 4.x "model.update()"回调已更改

在mongoose4.x之前,在update()中,您可以检查回调中的第二个参数以查看是否找到了文档。在下面的示例中,您可以使用“rowAffected”来查看是否存在用户名为john的文档。model.update({username:"john"},{...},function(err,rowAffected){if(rowAffected)//documentfound但是现在从mongoose4.x开始,回调中的第二个参数成为MongoDB更新操作的原始输出。所以要查找文档是否存在,我必须执行raw.nmodel.update({username:"john"},{...},f

c# - 如何防止在更新到 MongoDB 时出现 "_t"字段?

我有一个应用程序,它使用MongoDB的c#驱动程序将更新插入到MongoDB数据库中。当我调用Update函数时,我无法指定我要更新的类型,然后插入一个_t字段,其中包含元素的类型。这是我用来更新插入的代码:collection.Update(Query.EQ("key",item.Key),Update.Replace(item),UpdateFlags.Upsert);结果如下:当我进行初始插入时,这不会发生,因为我可以指定类型。如何在不插入_t字段的情况下制作Upserts?[编辑]这是我用来插入的代码:collection.InsertBatch(ItemType,items

MongoDB : update entire document except _id using C# driver

我必须更新除_id之外的所有字段。我想避免手动更新16个字段...所有新字段都存储在BsonDocument中谢谢你的想法 最佳答案 正如@Philipp所暗示的那样,有一种方法可以做到这一点。您实际上可以使用save函数(http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Save%3CTDocument%3Emethod),它将在数据库端为您执行他所说的操作。假设您有一份文档:{_id:{},d:1}而那个_id已经存在了

MongoDB 外壳 : check if update succeeded

类似于MongoDBupdate:howtocheckifanupdatesucceedsorfails?但对于默认的mongodbshell。db.collection.update()将在两种情况下静默执行:查询找到文档时和未找到文档时。两次更新后getLastError也为null。如何在不重新查询集合的情况下发现某些内容确实已更新?我在Ubuntu12.04上使用MongoDB版本2.0.4 最佳答案 db.getLastErrorObj()是您要调用以获取更新结果的内容。它返回一个如下所示的对象:{"updatedExis