我尝试使用aggregate
查询集合,但收到TypeError: users.aggregate is not a function
。这是我的代码:
./app.js(缩小以适合)
var express = require('express');
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/mydb');
var users = require('./routes/users');
var app = express();
app.use(function(req, res, next) {
req.db = db;
next();
});
app.use('/users', users);
module.exports = app;
./routes/user.js
var express = require('express');
var router = express.Router();
router.get('/test', function(req, res) {
var users = req.db.get('users');
users.aggregate([{ $match: { username: 'test0' }}], function(err, data) {
res.json(data);
});
});
module.exports = router;
我正在运行 MongoDB 版本 3.2.10,上面的查询在控制台中运行良好。我查找了解决方案,他们都建议检查 MongoDB 版本,我已经这样做了。我还尝试了 req.db.collection('users').aggregate
(如另一篇文章所建议的)并收到类似的错误: req.db.collection 不是函数
。我错过了什么?
编辑:
运行 users.find({ username: 'test0' }, func...
有效并返回正确的数据。
EDIT2:添加了更多代码。
最佳答案
你可以这样做。
var app = require('express')();
var expressMongoDb = require('express-mongo-db');
app.use(expressMongoDb('mongodb://localhost/test'));
app.get('/', function (req, res, next) {
req.db // => Db object
});
关于javascript - MongoDB - TypeError : users. 聚合不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40353037/