草庐IT

setOnInsert

全部标签

mongodb - 在带有 mgo 驱动程序的 Upsert 上使用 $setOnInsert

如何在Upsert上使用$setOnInsert以及GoMongoDB驱动程序的任何mgo变体? 最佳答案 给定任意类型Foo:typeFoostruct{IDbson.ObjectId`json:"_id,omitempty"bson:"_id,omitempty"`Barstring`json:"bar"bson:"bar"`Created*time.Time`json:"created,omitempty"bson:"created,omitempty"`Modified*time.Time`json:"modified,om

node.js - MongoDB atomic "findOrCreate": findOne, 如果不存在则插入,但不更新

正如标题所说,我想通过_id对文档进行查找(一个),如果不存在,则创建它,然后无论是找到还是创建,都在回调中返回.如果它存在,我不想更新它,正如我读到的findAndModify所做的那样。我在Stackoverflow上看到过许多与此相关的其他问题,但同样不想更新任何内容。我不确定是否通过创建(不存在的),这实际上是每个人都在谈论的更新,这太令人困惑了:( 最佳答案 从MongoDB2.4开始,不再需要依赖唯一索引(或任何其他解决方法)来进行类似findOrCreate的原子操作。这要归功于the$setOnInsertopera

javascript - 如何使用 Javascript 的 Java 驱动程序在 MongoDB 中插入 created_timestamp

我正在尝试通过javascript使用$setOnInsert,因此我可以在它第一次访问Mongo时插入created_timestamp。varuri=newPackages.com.mongodb.MongoClientURI("mongodb://usr:pwd@localhost:27017/admin");varmongoClient=newPackages.com.mongodb.MongoClient(uri);vardatabase=mongoClient.getDatabase("mydb");varcollection=database.getCollection(

python - Pymongo:批量更新 $setOnInsert 错误

我正在尝试进行批量更新,同时保留特定字段的状态。在我的代码中,我要么创建一个文档,要么添加到列表“东西”。#initbulkdata=[...]bulkop=col.initialize_ordered_bulk_op()fordindata:bulkop.find({'thing':d}).upsert().update({'$setOnInsert':{'status':0},'$push':{'stuff':'something'},'$inc':{'seq':1}})bulkop.execute()但是,当我尝试这个时,我遇到了一个错误。错误:pymongo.errors.Bu

node.js - Mongoose 中 $setOnInsert 的等效解决方法是什么

我在mongodb中有以下集合结构.说集合-学生-_id,firstname,lastname,class现在我想插入2个额外的列,比如marks作为array{mark1:m1,mark2:m2}wheninsertinganew行`。我按照下面的方式做了,但它插入了不包括marks的记录值(value)观。varstudent=newStudent({_id:id,firstname:result.fname,lastname:result.lname,class:result.class,marks:{mark1:result.mark.m1,mark2:result.mark.

mongodb - $inc 与 MongoCollection.findOneAndUpdate() 中的 $setOnInsert

我正在尝试在mongodb中实现一个'server-sidecounter-versioned'项并尝试执行以下操作/*使用JavaAPI*/DocumentdbDoc=dbCollection.findOneAndUpdate(newDocument("_id","meta"),newDocument("$inc",newDocument("version",1)).append("$setOnInsert",newDocument("version",0)),newFindOneAndUpdateOptions().upsert(true).returnDocument(Retur

mongodb - 在 upsert 期间使用 $set 和 $setOnInsert

我正在尝试更新mongodb中的集合,如果字段存在,将插入它。我不太确定如何使用upsert选项做到这一点。MongoCollectiondocs=mongoDb.getCollection("users");BsonfilterQuery=newDocument("userId",userId).append("fileType",fileType);BsonupdateQuery=newDocument("$set",newDocument("fileType",fileType).append("fileName",fileName).append("fileSize",file

Mongodb - $set 和 $setOnInsert 中的重复字段

在this发布后,接受的答案解释说,在upsert操作中,您不能在$set和$setOnInsert下拥有相同的字段。有人可以解释这是为什么吗?$setOnInsert似乎不应该与$set冲突,因为前者在插入文档时使用,而后者在文档更新时使用。 最佳答案 我遇到了这个问题。如果有人在寻找解决方案,您需要了解$set和$setOnInsert机制是如何工作的如果找到$set则刷新(忽略$setOnInsert)$setOnInsert插入一条新记录(然后执行$set)我不知道这一点,并认为只有一个运算符(operator)可以工作。这

Mongodb - $set 和 $setOnInsert 中的重复字段

在this发布后,接受的答案解释说,在upsert操作中,您不能在$set和$setOnInsert下拥有相同的字段。有人可以解释这是为什么吗?$setOnInsert似乎不应该与$set冲突,因为前者在插入文档时使用,而后者在文档更新时使用。 最佳答案 我遇到了这个问题。如果有人在寻找解决方案,您需要了解$set和$setOnInsert机制是如何工作的如果找到$set则刷新(忽略$setOnInsert)$setOnInsert插入一条新记录(然后执行$set)我不知道这一点,并认为只有一个运算符(operator)可以工作。这

MongoDB setOnInsert 并推送(如果已经存在)

如果文档不存在,我想添加一个文档,否则将一个元素添加到其中一个子文档中。db.test.update({name:'Peter'},$setOnInsert:{name:'Peter',visits:{'en':['today'],'us':[]}},$push:{visits.en:'today'},{upsert:true})如果Peter存在,则将一个元素添加到其visists.en或visists.us数组中。否则,为Peter创建一个文档。此文档应具有visits格式,其中应包含当前元素('today')。我的问题是我有“更新中有冲突的模组”。IE。(afaik),我不能在一
12