Articles of 索引

应该在应用程序设置中调用ensureIndex?

每当应用程序发生变化时调用ensureIndex是否合适,例如在app.configure ? 除了稍微慢一些的启动时间之外,它是否有任何缺点,而不是仅仅为新的mongo实例设置呢?

Node.js或C(不包括全文search)的大小写不敏感,确切的子string匹配/索引

哪些库在Node.js中提供大小写不敏感的确切子string匹配,以及大量的string? 我正在寻找基于索引的解决scheme。 举一个例子,考虑一个语料库包含数百万个string: "Abc Gef gHi" "Def Ghi xYz" … 我需要一个库,以便search"C ge"返回上面的第一个string,但search"C ge" (注意多个空格)不会。 换句话说,我并不是在寻找模糊的,智能的,全文search的词干和停词; 而是一个最简单的(和快速的)准确的子串匹配器,其索引大规模工作。 JavaScript中的解决scheme是受欢迎的,C中的解决scheme也是如此 (因为它们可以变成本地的Node.js模块)。 另外, 其他编程语言(如Java)的解决scheme也是可能的 ; 他们可以通过命令行使用。 优选地,解决scheme是磁盘空间限制的而不是内存限制的(例如,而不是Redis),并且它们应该向磁盘写入索引,以便后续的启动时间很短。 我发现的大部分解决scheme(如这里的问题 )的问题是,它们太聪明了。 也就是说,他们应用不同的词干或标准化,所以比赛是不准确的。 在此先感谢您的帮助!

我如何解释()在MongoDB中的upsert来查看是否使用索引?

当代码改变时,快速告诉我索引是否适合find()语句是( nodejs ) collection.find(query).explain(function(err, explaination) { console.log('MongoDebug: ' + explaination.cursor); }); 如果游标是BtreeCursortypes,则使用索引。 如何在使用insert()和upsert: true时检查这个问题upsert: true ?

我可以在Mongoose的子文档中使用唯一索引吗?

我想要防止RecordList的重复插入,其中两个RecordsList是相同的,如果它们具有相同的Record集合,即相同的子文档数组。 这是架构: var RecordList = new Schema({ event: {type: ObjectId, ref: Event}, creator: {type: ObjectId, ref: User}, records: { type: [Record], unique: true } }, {strict: true, safe: true}) 但是,似乎unique: true records中的unique: true不起作用; 当我保存与数据库中现有的一个RecordSchema相同的RecordList时,重复被成功保存,但我希望它返回一个错误。 我是新来的mongoose,看了其他的SO问题,很长一段时间,mongoose的文档没有发现任何东西,据我所知。 对不起,如果这有一个明显的答案!

mongoose:在任何组合的一对字段上的唯一索引

唯一性在多个字段可能通常意味着您不能具有某些字段的组合相同的文档,如name1和name2 。 所以它将不允许存在两个文件{name1: 'Joe', name2: 'Bob'} 。 如果name1和name2切换,例如{name1: 'Bob', name2: 'Joe'}和{name1: 'Joe', name2: 'Bob'}这仍然允许文档同时存在。 有没有办法让一个独特的索引不允许这两个? (如果{name1: 'Bob', name2: 'Joe'}存在,既不可以{name1: 'Bob', name2: 'Joe'}也不可以{name1: 'Joe', name2: 'Bob'} )

Mongoose创build不在该scheme中的索引

mongoose有一个奇怪的行为。 在计划中,我有几个索引,但有时索引所有领域和其他时间索引只是_id 。 它从来没有像指标那样制定指数。 其他的scheme运作良好,但这一个特别是给我的问题。 也许是因为它有80个字段? 我的env是mongodb v2.4.12,节点v0.10.40,mongoose npm软件包v4.0.0 这是模式(为了清晰起见,我拿出了一些字段): 'use strict'; var log = require('../../../../lib/logging')(module.id), config = require('../../../../production.config'), me = module.exports = { name: 'natstransactions', model: { originType: { // postback or import type: String, index: true, unique: false, required: true }, type: { type: String, index: true, unique: false, required: true }, memberid: […]

ElasticSearch – 聚合/分组:通过sorting和分页

我试图使用Elasticsearch(2.4)聚合通过使用该查询多个索引上的“productId”进行分组 { "from": 0, "size": 0, "min_score": 0.15, "query": { "filtered": { "query": { "bool": { "should": [ { "match_phrase_prefix": { "keywords.family": { "query": "low fat milk", "fuzziness": 0.7, "boost": 5 } } } ] } } } }, "aggs": { "group_by_0": { "terms": { "field": "productId", "size": 50 }, "aggs": { "top_tag_hits": { "top_hits": […]

在关联数组中进行双重索引

我正在使用Node.js构build一个服务器。 我将代表用户的对象存储在关联数组中,现在这些对象的索引是该连接的套接字标识。 使用Socket.io库,我通过简单地执行socket.id来获得它,因此对于每个处理程序来说,照顾我的请求,我总是可以知道哪个用户提出了请求。 客户端每个用户都有连接用户的id(与socket ID不同)。 问题araises当我有一个处理程序,用于发送消息从用户到另一个,我举个例子: 用户A需要发送一个消息给用户B,我的协议指定的消息是这样的: MSG_KEY:{MSG:'hello world',USER_ID:'12345'} 服务器端我有一个处理程序,侦听“MSG_KEY”,当消息发送它执行和使用socket.id我可以检索谁发出请求,但问题是,我需要也得到用户B但这次使用他的USER_ID。 我不想使用socket.id来避免会话欺骗。 我首先想到了在我的数组中的索引,通过从socket.id和用户ID索引它们的用户。 我的问题是:这样做是个好主意吗? socket.io提供了一个简化这个的方法吗?

索引一个embedded式文档的关键是什么意思?

我仍然不明白如何索引一个embedded式文档的关键真正的作品。 假设我有以下博客文章的集合: { _id:0, author: 'John Doe', content: 'How indexing an embedded document work?', comments: [ { sender:'Jane Doe', content: 'I can\'t make it out either.' }, etc… ] }, etc… 假设我现在在注释中的sender属性中设置一个索引: db.blog.createIndex({'comments.sender':1}) 现在的问题是: 这是否意味着发送者按升序排列的所有元素都创build了一个大的索引,而不pipe他们在哪个数组中? 或者为每个数组创build一个索引? 为了更清楚:当我这样做 blog.find({'comments.sender':'Jane Doe'}).toArray(function(err, array){}) 是否会遍历每个博客post,并查找每个数组,直到在该数组中find一条logging,并转到下一个post中的下一个数组? 还是有一个很大的索引,其中每个logging(由发件人sorting)映射到这个匹配所在的原始数组?

mongoose按分数进行索引

我正在尝试在mongoose中创build一个排行榜,并且正在通过提升分数来索引我的分数模式。 这里是我的代码: db.once('open', function callback () { console.log('Successfully connected to MongoDB'); var scoresSchema = new Schema ({ score: Number, user: String }, {autoIndex: false}); scoresSchema.index({ user: 1, score: -1 }); StatScore = mongoose.model('Score', scoresSchema); }); 它的输出如下 [ { _id: 57715497860521f404cfebf0, score: 87, user: 'seth', __v: 0 }, { _id: 577157151f39c2320548e6e5, score: 99, user: 'seth', __v: […]