草庐IT

mongoose-populate

全部标签

node.js - Mongoose 获取与数组匹配的文档

我有这样的架构{members:[{type:Schema.Types.ObjectId,ref:'User'}]createdAt:{type:Date,default:Date.now}...}文档是1-{members:["someid1","someid2"]},createdAt:"someTimeago"2-{members:["someid1","someid2","someid3"]},createdAt:"someTimeago"我想找到与元素数组完全匹配的文档['someid1','someid2']即上述示例文档中的文档1这怎么可能?任何帮助将不胜感激。

node.js - Node js Mongoose 填充限制

我有两个架构,比如城市和博客。我想创建一个带分页的博客页面。所以我正在引用城市名称来填充博客。说如果我没有一个城市的博客那么它不应该被退回。这是我获取博客的查询。City.find().skip(req.params.pageIndex*2).limit(2).sort('-created').populate('articles').exec(function(err,cities){res.jsonp(cities)}如果我使用上面的查询。我也得到了没有博客的城市。所以它会导致View中出现空行。我不希望发生这种情况。如何限制填充字段,不返回没有博客的城市。有什么建议吗?

node.js - 将一个新对象插入 Mongoose 的子文档数组字段中

[{"_id":ObjectId("579de5ad16944ccc24d5f4f1"),"dots":[{"id":1,"location":[{"lx":10,"ly":10}]},{"id":2,"location":[{}]}]}]以上是模型的json格式(来自mongobooter)让我们说“线”,我有_id和dots.id,我想将新对象添加到位置。那我该怎么做(使用Mongoose)? 最佳答案 您可以选择:Mongoose对象方式:document.dots[0].location.push({/*yoursubdoc

arrays - 如何使用 Mongoose 从数组中删除对象

我正在尝试使用mongoose从文档中的数组中删除一个对象。架构如下:vardiveSchema=newSchema({//irrelevantfieldsdivers:[{user:{type:Schema.Types.ObjectId,ref:'User',required:true},meetingLocation:{type:String,enum:['carpool','onSite'],required:true},dives:Number,exercise:{type:Schema.Types.ObjectId,ref:'Exercise'},}]});可能的条目可以是{

mongodb - Mongoose 聚合查询在 Jest/Mockgoose 测试中失败,在其他地方有效

我正在尝试为我的Mongoose模型创建一些测试,但我无法弄清楚如何让Jest/Mockgoose测试通过我的速记查询/聚合管道(见下面的第一个代码块)创建用于从一个集合中检索未在另一个集合中引用的随机文档。activitySchema.query.getUnused=function(){returnActivity.aggregate().lookup({from:'userActivity',localField:'_id',foreignField:'activity',as:'matched_docs',}).match({matched_docs:{$eq:[]}}).sa

node.js - Mongoose 中的嵌套数组

在我正在处理的集合中,文档如下所示:{name:'Myname',other:'other',stuff:[['something',12,4,'somethingelse'],['morestuff',2,4,8],['finally',12,'again',58],]}我编写了这个Mongoose模式来访问它:varMyDocSchema=newSchema({name:String,other:String,stuff:[],});当我查询文档时,一切正常,控制台中显示的输出是正确的。但是,当我尝试执行console.log(myDoc.stuff)时,我得到了以下信息:['so

javascript - 使用 Mongoose 将非常大的 CSV 保存到 mongoDB

我有一个包含超过200'000行的CSV文件。我需要将它保存到MongoDB。如果我尝试for循环,Node将耗尽内存。fs.readFile('data.txt',function(err,data){if(err)throwerr;data.split('\n');for(vari=0;i如何避免内存不足? 最佳答案 欢迎来到流媒体。您真正想要的是一个“事件流”,它“一次一个block”地处理您的输入,当然理想情况下是通过一个通用的分隔符,例如您当前正在使用的“换行符”。对于真正高效的东西,您可以添加MongoDB的使用"Bul

javascript - Mongoose - 无法访问对象属性?

我正在尝试访问返回的MongoDB(mongoose)查找的属性。如果我尝试控制台记录整个对象,我可以看到它的全部。但是如果我尝试记录一个属性,我会得到undefined。对象就在那里!functiongetAll(){letd=q.defer();User.find({},function(err,docs){if(err){d.reject(err);}for(letuserofdocs){console.log(user);//Thisworks!console.log(user.email);//Thisreturnsundefined!}d.resolve();});retu

node.js - 不能将 $match 与 mongoose 和聚合框架一起使用

这是我的架构:varuserschema=newmongoose.Schema({user:String,follow:[String],imagen:[{title:String,date:{type:Date,default:Date.now}}]});这是代码:usermodel.findOne({user:req.session.user},function(err,user){usermodel.aggregate({$unwind:'$imagen'},{$match:{_id:{$in:user.follow} }},{imagen:true},{$sort:{'imag

node.js - Mongoose:在 ReplicaSet 上阅读

我有一个mongodb副本集,我想从中读取主数据库和辅助数据库的数据。我已使用此命令连接到数据库:mongoose.connect('mongodb://user:password@54.230.1.1,user:password@54.230.1.2,user:password@54.230.1.3/PanPanDB?replicaSet=rs0&readPreference=nearest');它不起作用..我的应用程序继续从主要读取..有什么建议吗? 最佳答案 如果你想从辅助读取,你应该设置你的readpreference到以