Articles of objectid

用纯stringreplaceMongoDB中的ObjectID

我有一个MongoDB数据库,它可以生成types为ObjectID id。 我认为在将它们与string进行比较时,经常遇到ObjectIDtypes的问题,将它们输出为JSON等。 另外,当我访问用户configuration文件/users/59aed0f8f25c0f0ca8f94aad时,我认为它们非常难看。 所以,我想如果有可能(和聪明)避免使用ObjectID? 我真的很喜欢YouTube和IMDb ID的长度,所以我想找一个algorithm来创build这样的ID。 但是会不会有使用ObjectID的问题? 我从来没有真正明白,为什么他们不只是string,但我想知道是否有一些优化的原因或回溯时生成ID或类似的东西?

NodeJS&MongoDB – 基于ID数组获取对象

我遇到麻烦返回基于ObjectIds数组获取对象。 我收集了10个项目。 例如,在iOS应用程序中,我传递了一个用户已经保存为collections夹的ObjectIds数组,以返回collections夹选项卡中的这两个对象, ["59f85eae4545XXX9b94d53d3", "59f85eae45454XXXb94d76a1"] 现在,我刚刚使用NodeJS对请求顶部的ObjectId进行了硬编码,直到我请求工作,下面是请求 – exports.list_favs = function(req, res) { Articles.find({ _id: { $in: [ mongoose.Types.ObjectId('59f85aXXXXf1769b94d53ce'), mongoose.Types.ObjectId('59f85eaeXXXX1769b94d53d3') ]} }, function(err, articles) { if (err) res.send(err); res.json({ data: { articles } }); }); }; 而我甚至试过这个 – exports.list_favs = function(req, res) { var ids = new Array( new ObjectId("59f85eaeXXXX1769b94d53d3"), new ObjectId("59f85aXXXXf1769b94d53ce") ); Articles.find({ _id: { […]

MongoDB的ObjectId用法

我正在使用MongoDB和Mongoose ODM为我的NodeJS REST项目: 我的模型模式是: var playerSchema = new mongoose.Schema({ name: String, team: mongoose.Schema.Types.ObjectId }) 和服务器端 : app.post('/players', function(req, res) { Players.find(function(err, players) { res.json(players); }); }); 回应是: … { "_id": "511a6010e6ca7b0fe0af02ff", "name": "player-1", "team": "511a53e2e6ca7b151c09ce8d" } … 但我想要的东西是这样的: { "_id": "511a6010e6ca7b0fe0af02ff", "name": "player-1", "team": { _id: "511a53e2e6ca7b151c09ce8d" name: "team-1" } } 我做错了什么? 或者我还没有真正了解ObjectId? 谢谢!

如何缩短MongoDB的ObjectId并在Mongoose模式中使用它

我正在寻找一种方法来缩短由MongoDB数据库生成的ObjectID,我知道一些现有的库,如'shortid''short-mongo-id' 但是,我的问题是,我希望在集合中存在的每个文档的mongoose模式中创build一个新的“shortID”字段,这个新的字段应该是唯一的,理想情况下是连接到文档的ObjectId的截断版本。 像这样: var subjectSchema = new Schema({ shortID: {required: true, unique: true}, //must be unique to each document and is same everytime server restarts Sex: {type: String, enum: enumSex}, Diagnosis: String, Projects:[projectPerSubjectSchema] }); “shortid” https://www.npmjs.com/package/shortid库工作良好,并生成唯一的ID,但是,每次服务器重新启动时,它会生成不同的ID,这不是我想要的。 另一个我试过'short-mongo-id'的库能够把ObjectId转换成唯一IDstring的截断版本,但是,我不知道如何用它来创build一个模式。 我试过了: ID: {type: String, 'default': shortid((this.ObjectId).valueOf()), unique: true} 尝试使用this.ObjectId获取文档的ObjectId,使用valueOf()对其进行string化,但terminal显示: TypeError: Cannot read property 'valueOf' of undefined 所有的代码都在Node.JS中完成,我对NodeJS和MongoDB都很新,所以如果我在上面提供的代码中犯了一些重大错误,请纠正我的错误。 提前致谢!

对于模型“users”Mongoose Mongodb,在path“_id”上投射为数值“XXX”失败

我遇到了两个不同型号的问题。 User和Player 。 每个对象都有一个ObjectId存储。 当我尝试从User模型中find以下populate时,会发生我的错误。 User.find().populate('player_id') 具有Player_id的用户数据 > db.getCollection('users').find({}); { "_id" : ObjectId("58ea512576f3381d0cdf39a7"), "key" : "c7c7d3611f3d856f7a75eae5303e1cdf", "player_id" : ObjectId("59b3bff9605cbf7610c15837") } 玩家数据 > db.getCollection('players').find(); { "_id" : ObjectId("59b3bff9605cbf7610c15837"), "user_id" : ObjectId("58ea512576f3381d0cdf39a7") } 用户模型 var UserSchema = new Schema({ name: String, player_id: {type: Schema.ObjectId, ref: "Player", default: null} }) 玩家模型 var Player = new Schema({ fname : […]

MongoDB的objectID陌生人错误

在Heroku上使用MEAN Stack部署我能够通过mongoDB的findOne和deleteOne函数来GET和DELETE文档。 但是,当我尝试使用mongoDB updateOne / update函数来放置文档时,我收到此错误(服务器端): _id字段不能从{_id:ObjectId('56d4d71191fdc81100974d0b')}更改为{_id:“56d4d71191fdc81100974d0b”}。 似乎很奇怪,因为我在我的服务器代码中使用相同的方法updateOne中findOne (同样, findOne工作正常): app.get("/contacts/:id", function(req, res) { db.collection(CONTACTS_COLLECTION).findOne({ _id: new ObjectID(req.params.id) }, function(err, doc) { if (err) { handleError(err.message, "Failed to get contact"); } else { res.status(200).json(doc); } }); }); app.put("/contacts/:id", function(req, res) { var updateDoc = req.body; db.collection(CONTACTS_COLLECTION).updateOne({_id: new ObjectID(req.params.id)}, updateDoc, function(err, doc) { if (err) { […]

比较Mongoose查询中的ObjectID

我正在尝试更新扩展的Mongo数据库中的每个文档。 我的计划是从最年轻,最近创build的文档开始,然后从这里开始,一个一个地查询下一个最早的文档。 问题是我的Mongoose查询正在跳过同一秒内创build的文档。 我认为大于/小于运营商将在同一秒生成_ids工作。 但是现在数据库中有150个文件,这个函数只有8个循环,从最小的文件到最老的文件。 这是我在recursion节点循环中的Mongoose查询: function loopThroughDatabase(i, doc, sizeOfDatabase){ if (i < sizeOfDatabase) { (function(){ myMongooseCollection.model(false) .find() .where("_id") .lt(doc._id) .sort("id") .limit(1) .exec(function(err, docs) { if (err) { console.log(err); } else { updateDocAndSaveToDatabase(docs[0]); loopThroughDatabase(i + 1, docs[0], sizeOfDatabase); //recursion here } }); })(); } } loopThroughDatabase(1, youngestDoc, sizeOfDatabase);

缩短node.js和mongoose中的ObjectId

我的url现在是这样的: http://www.sitename.com/watch?companyId=507f1f77bcf86cd799439011&employeeId=507f191e810c19729de860ea&someOtherId=….. 所以,正如你所看到的,它变得相当长,相当快。 我正在考虑缩短这些ObjectIds。 想法是我应该在我的数据库中的每个模型中添加一个名为“shortId”的新字段。 所以,而不是有: var CompanySchema = mongoose.Schema({ /* _id will be added automatically by mongoose */ name: {type: String}, address: {type: String}, directorName: {type: String} }); 我们会有这样的: var CompanySchema = mongoose.Schema({ /* _id will be added automatically by mongoose */ shortId: {type: String}, /* WE SHOULD ADD THIS */ name: {type: String}, […]

如何在节点js中随机生成objectid

我需要在节点j中随机生成objectid。有什么办法可以创build。

通过Mongoose的ObjectId查找MongoDB文档

我正在尝试通过ObjectId来查找MongoDB中的文档。 工作stream程如下(这是一个博客)。 通过传递标题和正文在MongoDB中创build一个新post。 ObjectId是自动创build的。 去编辑post。 它使用来自URL的ObjectId从数据库中获取数据,并以相同的新postforms显示它,只是使用预先存在的值。 当提交button被点击时,我想通过ObjectIdfind文档,并使用后表单中的值更新数据库中的值。 步骤1和2工作正常,但步骤3似乎并没有工作。 它redirect到我需要的页面。 但数据库尚未更新。 这和以前一样。 以下是更新post部分的相关代码: app.js app.post "/office/post/:id/update", ensureAuthenticated, routes.updatePost 路线/ index.js mongoose = require 'mongoose' ObjectId = mongoose.Types.ObjectId Post = require '../models/Post' … updatePost: function(req, res) { var o_id, the_id; the_id = req.params.id; console.log(the_id); // 510e05114e2fd6ce61000001 o_id = ObjectId.fromString(the_id); console.log(o_id); // 510e05114e2fd6ce61000001 return Post.update({ "_id": ObjectId.fromString(the_id) }, […]