草庐IT

mongodb - 如何删除 MongoDB 中的 _id 并替换为另一个字段作为主键?

我的收藏中有大量文档。我想从所有文档中删除自动生成的对象ID(_id键)并将其替换为另一个字段作为主键?我不明白为什么首先需要默认对象ID? 最佳答案 在mongodb中每个文档必须是唯一的,所以你需要一个唯一的字段作为id。如果您不提供,mongodb会自动为您提供一个。但是,如果您想出于任何原因提供自定义ID(提高查询性能是其中之一),您可以手动进行。这是我的建议:如果要插入新文档,可以手动设置_id字段,如:doc._id="12312312"//(Orwhicheverfunctiontogenerateidyouhave)

java - MongoDB/Morphia 将技术 ID 保存为 ObjectId,尽管它在 Java 中是一个字符串

我的MongoDB中有两种文档:客户端和代码。每个代码代表一个客户。客户端必须由管理员明确存储,因此我必须将它们分开存储,不能将它们放入代码文档中。code->client现在MongoDB/Morphia将客户端的技术ID保存为ObjectId,而代码引用具有String类型技术ID的客户端。我能够通过给定的客户端ID搜索代码,但在运行时我会收到一条错误消息,因为Morphia无法注入(inject)客户端。我认为这是因为不同的id类型。code{client.$id:String}client{_id:ObjectId}有什么办法解决这个问题吗?异常com.google.code.

c# - 如何通过 GUID _id 查找文档?

我使用这段代码来检索一些文档:varclient=newMongoClient(connectionString);vardatabase=client.GetDatabase(databaseName);varcollection=database.GetCollection(collectionName);varjson="{created:{$gte:ISODate(\"2018-12-20T00:00:00.000Z\"),$lt:ISODate(\"2018-12-21T00:00:00.000Z\")}}";BsonDocumentquery=MongoDB.Bson.Se

shell - 通过 id 从 Mongo 中删除旧文档

在我当前的项目中,我们使用Mongo来存储大量文档(大约1000亿)。如何使用字段_id删除一半最旧的文档,因为如果我使用索引字段“timestamp”,此操作将在~3年后以当前速度完成。 最佳答案 这是一个MongoDB用户Google网上论坛帖子的链接,该帖子讨论了基于时间戳生成ObjectId:http://groups.google.com/group/mongodb-user/browse_thread/thread/262223bb0bd52a83/3fd9b01d0ad2c41b来自帖子:从MongoObjectIds

javascript - 从客户端的 mongo _id 中提取日期

我在客户端使用我的文档_id作为字符串。我希望能够像在服务器上一样从这个值中提取时间戳。是否可以在客户端重新创建此功能?(重铸为objectid,或创建一个独立的函数来提取此数据)示例_id:"4f94c2a11a6bbec3872cb315"谢谢! 最佳答案 这个怎么样,分解成几个步骤......不幸的是,它只是存储在ObjectID中的第二个解决时间。varid="4f94c2a11a6bbec3872cb315"​;//first4bytesarethetimestampportion(8hexchars)vartimehex

node.js - 为什么 gridfs get 不能仅按文件名处理文件 ID (ObjectId)

我正在使用nodejsmongodbmongoose和gridfs。当我尝试通过它的文件名获取文件时,如果我想通过id获取它,一切都运行良好错误:您要读取的文件不存在。我使用以下代码console.log("res.pic_id:"+res.pic_id)我得到了正确的ObjectId。这是代码:varGridFS=require('GridFS').GridFS;varmyFS=newGridFS('db');varfs=require('fs')varProfile=db.model('Profile');Profile.findOne({'_id':clientID},['_id

mongodb - 为什么MongoDb文档id前面有下划线?

为什么MongoDb文档id前面有下划线?为什么不叫它“id”而不是“_id”?这是我不知道的命名约定的一部分吗? 最佳答案 您可能会注意到MongoDB有很多函数(在shell中)和以understore开头的字段作为名称,它们是内部的或特殊的,而不是用户提供的。如果您有自己的“ID”,那么您可以将其存储为“id”并仍然使用MongoDB提供的_id字段,尽管您不需要使用MongoDB生成的ObjectId-您可以存储自己的自然“_id”字段中的主键始终具有唯一索引。 关于mongod

python - Django 模板和 MongoDB _id

Variablesandattributesmaynotbeginwithunderscores:'value._id'如何在Django模板中引用从MongoDB获取的项目的_id? 最佳答案 Customtemplatefilter会有所帮助:fromdjangoimporttemplateregister=template.Library()@register.filter(name='private')defprivate(obj,attribute):returngetattr(obj,attribute)你可以这样使用它

mongodb - Sitecore 8.1 错误 : "No session Id managers were found to manage the session Id for the current request"

我试图在Sitecore8.1中启动并运行基本布局,但我遇到了一个错误,关于该错误我只能找到很少的信息。尝试查看任何页面(即使是后端界面或从SitecoreRocks连接)时,我收到消息“找不到sessionID管理器来管理当前请求的sessionID。”一些谷歌搜索表明这与开箱即用的session提供程序的一些问题有关,并建议将其换掉以将session保留在Mongo中。Sitecore的文档提供了这方面的描述,均适用于shared。和privatesession。我已尝试实现这些,但仍然收到相同的错误。这是我现在的代码:App_Config/Include/MongoSession

ruby - 如何通过_id 检索文档?

当我有对象ID时,我正在尝试检索文档-但是,查询不起作用。@collection=@db.collection('Mylist')@result=@collection.find({"_id"=>params[:id]})我已经尝试了查询的变体-它总是返回空-但是当我尝试对集合进行查询时,如下所示,它会起作用。@result=@collection.find({"Exist"=>"True"})为什么?奇怪的是,复杂的查询有效,但_id的简单查询什么都不返回。如果可能,我不想使用MongoMapper。谢谢 最佳答案 找到了-你需要