我有这样的集合:
{
'datetime': some-date,
'lat': '32.00',
'lon': '74.00'
},
{
'datetime': some-date,
'lat': '32.00',
'lon': '74.00'
}
Run Code Online (Sandbox Code Playgroud)
如何获取MongoDB的最新记录,其中datetime是最新记录?我只想要一条记录.
目前我很困惑,主要问题是:Mongoose/Mongojs有什么用? 如果我在没有Mongoose/Mongojs的情况下运行Node.js会有什么不同?
我找不到关于Mongoose或Mongojs如何与Node.js配合的大图的任何好的解释.
Mongoose的口号:"node.js的优雅mongodb对象建模"没有帮助.
顺便说一句,我认为Mongoose和Mongojs正在为Node.js做同样的事情(即可以互换),但这个页面似乎描述的Mongojs与Mongoose完全不同:"尽可能模仿mongodb API的简单驱动程序." 所以我把Mongoose和Mongojs放在一起可能是错的.如果是这样,请澄清.
也许我不应该使用Mongojs,因为stackoverflow甚至没有标签.如果是这样,请忽略我上面提到的有关Mongojs的所有内容.
在使用Mongoose和Mongojs展示Node.js的主题时,我应该知道这个页面还有什么?
谢谢.
我一直无法使用mongojs驱动程序为nodejs在mongodb中插入实际的datetime对象.有帮助吗?
var currentdate = new Date();
var datetime = currentdate.getDate() + "/"
+ (currentdate.getMonth()+1) + "/"
+ currentdate.getFullYear() + " @ "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds();
db.test.update({
conversation: conv
},{
$push:{ messages: {
message: message,
pseudo: name,
current_date: datetime
}}
},{upsert: true});
Run Code Online (Sandbox Code Playgroud) 您好我正在尝试使用Async模块检索两个用户并在它们都被检索后进行一些处理但是我不断收到错误消息:已经调用了回调.以下是我目前的代码:
app.get('/api/addfriend/:id/:email', function(req, res) {
var id = req.params.id;
var friendEmail = req.params.email;
async.parallel([
//get account
function(callback) {
accountsDB.find({
'_id': ObjectId(id)
}, function(err, account) {
console.log(id);
if (err || account.length === 0) {
callback(err);
}
console.log(account[0]);
callback(null, account[0]);
});
},
//get friend
function(callback) {
accountsDB.find({
'email': friendEmail
}, function(err, friend) {
console.log(friendEmail);
if (err || friend.length === 0 || friend[0].resId === undefined) {
callback(err);
}
console.log(friend[0]);
callback(null, friend[0].resId);
});
}
],
//Compute all results
function(err, results) {
if (err) { …Run Code Online (Sandbox Code Playgroud) 我有一个文件"所有者",可以有"n"个阵营,营地有"教官",教师有"班级".之前我尝试使用嵌套数组来完成此操作(请参阅下面链接到我的帖子),但是我了解到位置运算符"$"没有嵌套那么深. MongoDB:将数组添加到现有数组中
但是,我了解到解决方法是使用对象集合而不是数组.我假设我必须使用"更新"和"$ set"来添加额外的"阵营",但是每次我做的都是覆盖(更新)之前插入的阵营.
下面是我想要完成的层次结构:
owner = {
firstName: 'john',
lastName: 'smith',
ownerEmail: 'john.smith@gmail.com',
camps : {
{
name: 'cubs-killeen',
location: 'killeen'
},
{
name: 'cubs-temple',
location: 'temple'
},
instructors : {
{
firstName: 'joe',
lastName : 'black'
},
{
firstName: 'will',
lastName : 'smith'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也一直在尝试以下方面:
db.owners.update({ownerEmail:'john.smith@gmail.com'}, {$set: { camps:{ {name:'cubs-killeen'} } }})
Run Code Online (Sandbox Code Playgroud)
但是这会抛出一个意外的标识符{错误.
任何帮助一些示例mongo命令来实现上述结构将是非常感激的.
V/R
克里斯
我正在使用mongojs,我正在尝试迭代集合中的所有元素
index = 0
db.keys.find({}, {uid: 1, _id: 0}).forEach((err, key) =>
if err?
console.log err
else
console.log (++index) + " key: " + key_uid
Run Code Online (Sandbox Code Playgroud)
哪些日志
1 key: bB0KN
2 key: LOtOL
3 key: 51xJM
4 key: x9wFP
5 key: hcJKP
6 key: QZxnE
.
.
.
96 key: EeW6E
97 key: wqfmM
98 key: LIGHK
99 key: bjWTI
100 key: 2zNGE
101 key: F71mL
Run Code Online (Sandbox Code Playgroud)
然后停下来.但是当我从终端登录mongo并运行时
> db.keys.count()
2317381
Run Code Online (Sandbox Code Playgroud)
很明显它应该返回更多的键.您有什么想法会导致这种行为吗?
我收到错误"TypeError:无法读取未定义的属性'_id'"在简单的帖子请求上将文档保存到名为的集合中books,我的有效负载如下所示:
{
"name": "practical view",
"author": "DN",
"location": "room 50"
}
Run Code Online (Sandbox Code Playgroud)
我只是db.books.save()在快递路线上做.由于我没有传递id,理想情况下这应该可行,但在这种情况下不行.
下面是我在节点服务器上获得的完整错误转储:
C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:411
throw err
^
TypeError: Cannot read property '_id' of undefined
at Collection.save (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\collection.js:393:15)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:203:65
at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25
at Db.collection (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\db.js:488:44)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:268:7
at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28)
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:300:4
at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:408:11
31 Aug 00:14:30 - [nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,我使用express,Node.js和MongoDB(使用mongojs).我有一个模块db.js和一个server.js,下面有片段.
db.js
var getUsersByCity = function(city, callback) {
db.users.find({'city': city}).toArray(function(err, data) {
if (err) {
callback(err);
console.log(err);
} else {
console.log(data);
callback.json(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
server.js
app.post("/get_users_list", function(req, res) {
var body = req.body;
db.getUsersByCity(body.city, res);
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为正如你所看到的callback.json(data),当我应该使用时,我(可能是错误地)使用了它callback(data).我认为db.js模块不应该负责发送响应,我应该res.json作为回调函数传递给我的函数.
问题是:当我按照我认为正确的方式做事时,我面临以下错误:
path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/base.js:245
throw message;
^
TypeError: Cannot call method 'get' of undefined
at res.json (path_to_my_app/node_modules/express/lib/response.js:189:22)
at path_to_my_app/db.js:36:13
at path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:163:16
at commandHandler (path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:706:16)
at path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/db.js:1843:9
at Server.Base._callHandler (path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/base.js:445:41)
at path_to_my_app/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/server.js:468:18
at …Run Code Online (Sandbox Code Playgroud) 我遇到了需要动态更新子文档中字段值的情况.该字段可能已存在,也可能尚未存在.如果它不存在,我想让mongo创建它.
这是我的Teams集合中的示例文档,用于存储任何给定团队的成员:
{
_id : ObjectId('JKS78678923SDFD678'),
name : "Bob Lawblaw",
status : "admin",
options : {
one : "One",
two : "Two"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的查询(我使用mongojs作为我的mongo客户端)来尝试更新(或创建)options子文档中的值:
var projectID = 'JKS78678923SDFD678';
var key = 'Three';
var value = 'Three';
Teams.findAndModify({
query: {
projectID:mongojs.ObjectId(projectID)
},
update: {
$set : { options[key] : value }
},
upsert: true,
multi: false,
new: true
},
function(error, result, lastErrorObject){
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
但我无法让它"贬值"这个价值.
我也发现了这个类似的问题,但该方法也不起作用: Nodejs Mongo插入子文档 - 动态字段名
在此先感谢您的帮助.
我希望能够查询我的mongoDB并在我的网页上显示这个结果...现在我正在使用mongojs驱动程序 - 我发现驱动程序非常适合将数据放入数据库 - 语法与Mongo shell相同,我可以将代码放在我的Node应用程序中.这个任务......简单地在网页上甚至在控制台上显示查询结果已经证明非常困难.以下是我的代码的相关部分以及我尝试过的内容.
var databaseUrl = "test"; // "username:password@example.com/mydb"
var collections = ["graph1"]
var db = require("mongojs").connect(databaseUrl, collections);
console.log(db.graph1.find());
Run Code Online (Sandbox Code Playgroud)
我创建了一个名为graph1的集合,并在mongo提示符中生成结果.注意......我确实希望以HTML格式显示它...但是如果我可以将它打印到控制台,我可以使用我的HTML来获取它.
它目前输出:
{_oncursor: { get: [Function], put: [Function] } }
Run Code Online (Sandbox Code Playgroud)
我真正想要的某种原型,这是:
{ "x" : "0", "y" : "1343725568", "_id" : ObjectId("4fba6....") }
Run Code Online (Sandbox Code Playgroud) mongojs ×10
mongodb ×8
node.js ×8
javascript ×5
express ×2
asynchronous ×1
coffeescript ×1
iterator ×1
mongoose ×1