Questions tagged «mongoose»

Mongoose是用JavaScript编写的MongoDB对象建模工具或ODM(对象文档映射器),旨在在异步环境中工作。

11
查找数组字段不为空的MongoDB记录
我所有的记录都有一个名为“图片”的字段。该字段是字符串数组。 我现在想要该数组不为空的最新10条记录。 我已经在Google周围搜索了,但是奇怪的是,我在这方面没有发现太多。我已经读过$ where选项,但是我想知道这对本机函数有多慢,以及是否有更好的解决方案。 即使这样,它也不起作用: ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind() 不返回任何内容。this.pictures没有长度位的保留确实有效,但是当然它也返回空记录。
502 mongodb  mongoose 

10
查找包含特定值的数组的文档
如果我有这个架构... person = { name : String, favoriteFoods : Array } ...在其中favoriteFoods用字符串填充数组。我怎么能找到所有以猫鼬为食的人? 我一直希望以下方面的东西: PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...}); (我知道$containsmongodb中没有此功能,只是在知道解决方案之前先解释了我期望找到的内容)
499 mongodb  mongoose 

23
如何在Mongoose中更新/上传文档?
也许是时候了,也许是我淹没在稀疏的文档中,无法将自己的头围在Mongoose中的更新概念上:) 这是交易: 我有一个联系模式和模型(缩短的属性): var mongoose = require('mongoose'), Schema = mongoose.Schema; var mongooseTypes = require("mongoose-types"), useTimestamps = mongooseTypes.useTimestamps; var ContactSchema = new Schema({ phone: { type: String, index: { unique: true, dropDups: true } }, status: { type: String, lowercase: true, trim: true, default: 'on' } }); ContactSchema.plugin(useTimestamps); var Contact = …


10
猫鼬:findOneAndUpdate不返回更新的文档
下面是我的代码 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var Cat = mongoose.model('Cat', { name: String, age: {type: Number, default: 20}, create: {type: Date, default: Date.now} }); Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}},function(err, doc){ if(err){ console.log("Something wrong when updating data!"); } console.log(doc); }); 我的mongo数据库中已经有一些记录,我想运行此代码来更新年龄为17岁的姓名,然后在代码末尾打印结果。 但是,为什么我仍然从控制台获得相同的结果(而不是修改后的名称),但是当我转到mongo db命令行并键入“db.cats.find(); ”时。结果带有修改后的名称。 然后,我再次运行该代码,并修改了结果。 我的问题是:如果修改了数据,那么为什么在console.log时还是第一次获得原始数据。


20
通过将useNewUrlParser设置为true来避免“不建议使用当前URL字符串解析器”警告
我有一个数据库包装器类,用于建立与某些MongoDB实例的连接: async connect(connectionString: string): Promise<void> { this.client = await MongoClient.connect(connectionString) this.db = this.client.db() } 这给了我一个警告: (节点:4833)DeprecationWarning:不建议使用当前的URL字符串解析器,并将在以后的版本中将其删除。要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect。 该connect()方法接受一个MongoClientOptions实例作为第二个参数。但是它没有名为的属性useNewUrlParser。我也试图像这样在连接字符串中设置那些属性:mongodb://127.0.0.1/my-db?useNewUrlParser=true但是它对那些警告没有影响。 那么我该如何设置useNewUrlParser删除那些警告?这对我很重要,因为脚本应作为cron运行,并且这些警告会导致垃圾邮件垃圾邮件。 我正在使用mongodb版本中的驱动程序3.1.0-beta4和中的相应@types/mongodb软件包3.0.18。两者都是的最新版本npm install。 解决方法 使用旧版本的mongodb驱动程序: "mongodb": "~3.0.8", "@types/mongodb": "~3.0.18"


20
E11000 MongoDB猫鼬中的重复键错误索引
以下是我user在user.js模型中的架构- var userSchema = new mongoose.Schema({ local: { name: { type: String }, email : { type: String, require: true, unique: true }, password: { type: String, require:true }, }, facebook: { id : { type: String }, token : { type: String }, email : { type: String }, …


6
如何将Mongoose文档转换为普通对象?
我有一个猫鼬的文档,我想在JSON编码之前进行扩展并作为响应发送出去。如果我尝试向文档添加属性,则将其忽略。该属性不会出现无法Object.getOwnPropertyNames(doc)进行正常扩展的情况。奇怪的是,它JSON.parse(JSON.encode(doc))可以正常工作并返回具有所有正确属性的对象。有一个更好的方法吗?
200 node.js  mongoose 

7
比较猫鼬_id和字符串
我有一个node.js应用程序,它可以提取一些数据并将其粘贴到对象中,如下所示: var results = new Object(); User.findOne(query, function(err, u) { results.userId = u._id; } 当我基于存储的ID执行if / then时,比较永远不会成立: if (results.userId == AnotherMongoDocument._id) { console.log('This is never true'); } 当我执行两个ID的console.log时,它们完全匹配: User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002 我以为这是某种数据类型问题,但是我不确定如何将results.userId转换为数据类型,从而导致上述比较正确,而我的外包大脑(又名Google)无法提供帮助。

30
无法加载c ++ bson扩展
总节点菜鸟在这里。我一直在尝试设置示例节点应用程序,但是每次我尝试运行时都会弹出以下错误: 节点应用 Failed to load c++ bson extension, using pure JS version events.js:72 throw er; // Unhandled 'error' event ^ Error: failed to connect to [#$%67890 :27017] at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74) at EventEmitter.emit (events.js:106:17) at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10) at Socket.EventEmitter.emit (events.js:95:17) at net.js:830:16 at process._tickCallback (node.js:415:13)

6
通过猫鼬将项目推入mongo数组
我一直在寻找答案,但我确定我迷失了正确的词来描述我的追求。 基本上,我有一个名为“ people”的mongodb集合,该集合的架构如下: people: { name: String, friends: [{firstName: String, lastName: String}] } 现在,我有一个非常基本的express应用程序,该应用程序连接到数据库并使用空的Friends数组成功创建了“ people”。 在应用程序的次要位置,有一个添加好友的表单。该表单采用firstName和lastName,然后使用带有名称字段的POST来引用适当的people对象。 我很难做的是创建一个新的朋友对象,然后将其“推送”到friends数组中。 我知道,当我通过mongo控制台执行此操作时,我会使用$ push的更新功能作为查找条件之后的第二个参数,但是我似乎找不到合适的方法来使猫鼬执行此操作。 db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}}); 更新: 因此,阿德里安的答案非常有帮助。以下是我为实现自己的目标所做的工作。 在我的app.js文件中,我使用 app.get('/addfriend', users.addFriend); 我的users.js文件中的哪里 exports.addFriend = function (req, res, next) { var friend = {"firstName": req.body.fName, "lastName": req.body.lName}; Users.findOneAndUpdate({name: req.user.name}, {$push: …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.