Questions tagged «mongoose»

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

1
在猫鼬中将两个OR查询与AND结合
我想在Monoose中将两个OR查询与AND结合在一起,例如以下SQL语句: SELECT * FROM ... WHERE (a = 1 OR b = 1) AND (c=1 OR d=1) 我在NodeJS模块中尝试了此操作,该模块仅从主应用程序获取模型对象: /********** Main application ***********/ var query = MyModel.find({}); myModule1.addCondition(query); myModule2.addCondition(query); query.exec(...) /************ myModule1 ***************/ exports.addCondition = function(query) { query.or({a: 1}, {b: 1}); } /************ myModule2 ***************/ exports.addCondition = function(query) { query.or({c: 1}, …

16
MongoDB密码,其中带有“ @”
我正在尝试使用Node.js中的Mongoose使用用户名和密码连接到MongoDB数据库。所有文档都说连接字符串应该像 mongodb://username:password@host:port/db 但是,密码中包含“ @”字符。我怎样才能用猫鼬会理解的连接字符串呢?我可以不使用密码中的“ @”,还是必须使用其他连接方法?

4
如何使用Mongoose从集合中删除所有文档?
我会... 删除单个文档。 删除集合本身。 使用Mongo从集合中删除所有文档。 但是我不知道如何使用Mongoose从集合中删除所有文档。当用户单击按钮时,我想这样做。我假设我需要向某个端点发送AJAX请求并让端点执行删除操作,但是我不知道如何在端点处处理删除操作。 在我的示例中,我有一个Datetime集合,并且我想在用户单击按钮时删除所有文档。 api / datetime / index.js 'use strict'; var express = require('express'); var controller = require('./datetime.controller'); var router = express.Router(); router.get('/', controller.index); router.get('/:id', controller.show); router.post('/', controller.create); router.put('/:id', controller.update); router.patch('/:id', controller.update); router.delete('/:id', controller.destroy); module.exports = router; api / datetime / datetime.controller.js 'use strict'; var _ = …

14
猫鼬打字稿方式...?
试图在Typescript中实现Mongoose模型。对Google的调查只揭示了一种混合方法(结合JS和TS)。如果没有JS,如何以我比较幼稚的方式实现User类呢? 希望能够不带行李的IUserModel。 import {IUser} from './user.ts'; import {Document, Schema, Model} from 'mongoose'; // mixing in a couple of interfaces interface IUserDocument extends IUser, Document {} // mongoose, why oh why '[String]' // TODO: investigate out why mongoose needs its own data types let userSchema: Schema = new Schema({ userName : …

8
(节点:3341)弃用警告:猫鼬:mpromise
我正在尝试使用自定义方法在猫鼬的顶部开发一个类,因此我用自己的类扩展了猫鼬,但是当我调用创建一个新的car方法时,它可以工作,但是它的剥离和错误,在这里我让你看看我要做什么。 我收到此警告 (node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html 我做完之后 driver.createCar({ carName: 'jeep', availableSeats: 4, }, callback); driver是Driver类的实例 const carSchema = new Schema({ carName: String, availableSeats: Number, createdOn: { type: Date, default: Date.now }, }); const driverSchema = new …

7
MongoDB,从数组中删除对象
文件: { _id: 5150a1199fac0e6910000002, name: 'some name, items: [{ id: 23, name: 'item name 23' },{ id: 24, name: 'item name 24' }] } 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}}); 但是我很确定我没有正确使用'pull'。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。


3
如何在猫鼬中创建和使用枚举
我试图enum在猫鼬中创建和使用一种类型。我检查了一下,但没有得到正确的结果。我enum在猫鼬模式中使用如下: var RequirementSchema = new mongoose.Schema({ status: { type: String, enum : ['NEW', 'STATUS'], default: 'NEW' }, }) 但是我在这里有点困惑,我怎样才能将enumlike的值放入Java NEW("new")。如何enum根据数据库的枚举值将其保存到数据库中。我在express node.js中使用它。


5
猫鼬限制/偏移量和计数查询
查询性能有点奇怪...我需要运行一个查询,该查询可以对文档总数进行计数,并且还可以返回可以限制和偏移的结果集。 因此,我总共有57个文档,而用户希望将10个文档偏移20。 我可以想到两种方法,首先是查询所有57个文档(作为数组返回),然后使用array.slice返回所需的文档。第二个选项是运行2个查询,第一个查询使用mongo的本地“ count”方法,然后使用mongo的本地$ limit和$ skip聚合器运行第二个查询。 您认为哪种方法更好?在一个查询中执行全部操作,还是运行两个单独的查询? 编辑: // 1 query var limit = 10; var offset = 20; Animals.find({}, function (err, animals) { if (err) { return next(err); } res.send({count: animals.length, animals: animals.slice(offset, limit + offset)}); }); // 2 queries Animals.find({}, {limit:10, skip:20} function (err, animals) { if (err) …
84 mongodb  mongoose 

15
如何保护Mongoose / MongoDB中的密码字段,以便在填充集合时它不会在查询中返回?
假设我有两个集合/方案。一个是带有用户名和密码的用户架构字段,然后,我有一个博客架构,该博客架构在作者字段中引用了用户架构。如果我用猫鼬做类似的事情 Blogs.findOne({...}).populate("user").exec() 我将同时拥有Blog文档和用户,但是如何防止Mongoose / MongoDB返回密码字段?密码字段已散列,但不应返回。 我知道我可以省略密码字段,并在一个简单的查询中返回其余字段,但是我该如何用填充来做到这一点。另外,有什么优雅的方法吗? 另外,在某些情况下,我确实需要获取密码字段,例如当用户想要登录或更改密码时。

6
猫鼬中哪个SchemaType最适合时间戳?
我正在使用Mongoose,MongoDB和Node。 我想定义一个架构,其中的一个字段是date \ timestamp。 我想使用此字段来返回最近5分钟内已更新的所有记录。 由于在Mongoose中我无法使用Timestamp()方法,因此我了解到,我唯一的选择是使用以下Javascript方法: time : { type: Number, default: (new Date()).getTime() } 这可能不是查询庞大数据库的最有效方法。如果有人可以分享一种更有效的实施方法,我将非常感激。 有什么方法可以用Mongoose来实现,并且可以使用MongoDB时间戳吗?

3
如何使用Node.js返回复杂的JSON响应?
使用nodejs和express,我想使用JSON返回一个或多个对象(数组)。在下面的代码中,我一次输出一个JSON对象。它有效,但这不是我想要的。由于我有很多对象,因此生成的响应不是有效的JSON响应。 我很清楚,我可以简单地将所有对象添加到数组中,然后在res.end中返回该特定数组。但是,恐怕这可能会使处理和内存密集化变得很重。 使用nodejs实现此目的的正确方法是什么?是query.each正确的调用方法吗? app.get('/users/:email/messages/unread', function(req, res, next) { var query = MessageInfo .find({ $and: [ { 'email': req.params.email }, { 'hasBeenRead': false } ] }); res.writeHead(200, { 'Content-Type': 'application/json' }); query.each(function(err, msg) { if (msg) { res.write(JSON.stringify({ msgId: msg.fileName })); } else { res.end(); } }); });

3
如何创建带有对象ID数组的猫鼬模式?
我定义了一个猫鼬用户模式: var userSchema = mongoose.Schema({ email: { type: String, required: true, unique: true}, password: { type: String, required: true}, name: { first: { type: String, required: true, trim: true}, last: { type: String, required: true, trim: true} }, phone: Number, lists: [listSchema], friends: [mongoose.Types.ObjectId], accessToken: { type: String } // …

10
从猫鼬返回带有.populate()的某些字段
运行查询后,我从MongoDB返回了JSON值。问题是我不想返回与返回相关的所有JSON,我尝试搜索文档,但没有找到正确的方法来执行此操作。我想知道是否有可能,如果可行的话,正确的方法是什么。示例:在数据库中 { user: "RMS", OS: "GNU/HURD", bearded: "yes", philosophy: { software: "FOSS", cryptology: "Necessary" }, email: { responds: "Yes", address: "rms@gnu.org" }, facebook: {} } { user: "zuckerburg", os: "OSX", bearded: "no", philosophy: { software: "OSS", cryptology: "Optional" }, email: {}, facebook: { responds: "Sometimes", address: "https://www.facebook.com/zuck?fref=ts" } } 如果用户存在该字段,但不返回其他字段,则返回该字段的正确方法是什么?对于上面的示例,我想返回[email][address]RMS[facebook][address]字段和Zuckerburg字段。这就是我尝试查找的字段是否为空,但是它似乎没有起作用的原因。 …

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.