是否可以选择使用猫鼬进行批量更新?所以基本上有一个数组,如果不存在则插入每个元素,如果存在则更新它?(我正在使用海关_ids)
当我确实使用 .insert时, MongoDB对于重复的密钥(应更新)返回错误E11000。插入多个新文档可以正常工作:
var Users = self.db.collection('Users');
Users.insert(data, function(err){
if (err) {
callback(err);
}
else {
callback(null);
}
});
使用 .save 返回错误,该参数必须是单个文档:
Users.save(data, function(err){
...
}
这个答案表明没有这样的选择,但是它是针对C#的,并且已经使用了3年。所以我想知道是否有使用猫鼬做这件事的选择?
谢谢!
不在具体的“猫鼬”中,或者至少在撰写时尚未。从2.6版本开始,MongoDB shell实际上“在幕后”
使用了“批量操作API
”,就像所有常规辅助方法一样。在其实现中,它首先尝试执行此操作,如果检测到较旧版本的服务器,则对旧版实现会有“退路”。
所有的猫鼬方法“当前”都使用“传统”实现或写关注响应和基本的旧方法。但是.collection
,任何给定的猫鼬模型都有一个访问器,该访问器实际上是从底层的“节点本机驱动程序”中访问“集合对象”,而在该节点上本身实现了猫鼬:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var sampleSchema = new Schema({},{ "strict": false });
var Sample = mongoose.model( "Sample", sampleSchema, "sample" );
mongoose.connection.on("open", function(err,conn) {
var bulk = Sample.collection.initializeOrderedBulkOp();
var counter = 0;
// representing a long loop
for ( var x = 0; x < 100000; x++ ) {
bulk.find(/* some search */).upsert().updateOne(
/* update conditions */
});
counter++;
if ( counter % 1000 == 0 )
bulk.execute(function(err,result) {
bulk = Sample.collection.initializeOrderedBulkOp();
});
}
if ( counter % 1000 != 0 )
bulk.execute(functhtml" target="_blank">ion(err,result) {
// maybe do something with result
});
});
最主要的收获是“猫鼬方法”实际上知道可能尚未真正建立连接,并在完成之前“排队”。您正在“挖掘”的本机驱动程序没有这种区别。
因此,您确实必须意识到以某种方式或形式建立了连接。但是您可以使用本机驱动程序方法,只要您对所做的事情保持谨慎即可。
嗨,我试图简单地从使用猫鼬的集合中删除一个文档,但由于一些奇怪的原因,我无法让它工作。 代码如下: 有人能帮我解释一下语法吗?我知道_id被存储为新的ObjectId(“5214f4050acb53fe31000004”),但我试过了却没有乐趣? 谢谢
我的mongoDB中有这种数据 这里假设我做一个查询 这给了我她的结果,但我有名字“nna”或名字“Ana”或名字“anna”或任何其他组合。那么,如何使用Mongoose获取MongoDB中字符串的最接近值呢
问题内容: 我正在尝试使用Mongoose将AngularJS与MongoDB连接。我想传递控制器要使用的模型,所以我可以$ scope到数据。我不确定是否必须设置Angular Service,如果可以,您是否可以指出正确的方向。谢谢。 概述: 模型: 控制器: 问题答案: 您将需要一个临时步骤。直接从Angular转到Mongo是行不通的。如果您想要Mongo的通用REST接口,可以使用Ang
目标 无明确目标 知识点 了解 mongodb (http://www.mongodb.org/ ) 学习 mongoose 的使用 (http://mongoosejs.com/ ) 课程内容 mongodb mongodb 这个名词相信大家不会陌生吧。有段时间 nosql 的概念炒得特别火,其中 hbase redis mongodb couchdb 之类的名词都相继进入了大众的视野。 hba
假设我在Mongoose模式上有这个数组属性(“articles”): 我如何使用 $addToSethttps://docs.mongodb.org/manual/reference/operator/update/addToSet/ 要通过检查hashtag的值来添加到此数组,以查看它是否唯一? 例如,如果我想将以下对象添加到上述数组中,我希望Mongo将其作为副本“拒绝”: 因为hashta
问题内容: 说我在猫鼬模式上有这个数组属性(“文章”): 我该怎么用 $ addToSet https://docs.mongodb.org/manual/reference/operator/update/addToSet/ 通过检查主题标签的值以查看其是否唯一来添加到此数组? 例如,如果我要将以下对象添加到上述数组中,则希望Mongo将其“重复”删除: 因为hashtag = foo已经被使用