node.js - MongoDB 确保索引不会停止重复

标签 node.js mongodb

我试图阻止我的 Mongo DB 集合中的重复项,但它们仍在进入。我正在从 twitter 读取数据并将其存储为:

var data = {
    user_name: response[i].user.screen_name,
    profile_image: response[i].user.profile_image_url,
    content: {
        text: response[i].text
    },
    id: response[i].id_str,
};

我有以下方法来阻止任何重复:

db[collection].ensureIndex( { id: 1, "content.text": 1 }, { unique: true, dropDups: true } );

id 字段正常工作,没有出现重复项,但“content.text”字段不起作用,并且出现重复项。有什么想法吗?

最佳答案

当您强制执行 unique 时对于复合索引的约束,仅当两个文档的 idcontext.text 字段具有相同的值而不是单独的任一键时,两个文档才被视为相同。

要分别对字段 idcontext.text 强制执行唯一约束,您可以按如下方式强制执行:

db.col.ensureIndex({"id":1},{unique:true}) 对于其他字段也是如此。

关于node.js - MongoDB 确保索引不会停止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029691/

相关文章:

javascript - 尝试使用嵌入制作一个不和谐的日志记录机器人

node.js - 亚马逊云,存储 Assets

node.js - 我无法在 Node 中修改数组

node.js - 如何使用node.js在平均堆栈中实现node_acl

javascript - 我需要手动关闭 Mongoose 连接吗?

node.js - 在node.js/Express中,为什么有时在next()之后需要return语句,有时不需要?

node.js - 加速缓慢的 Mongo/Mongoose 查询

node.js - 如何捆绑 NodeJs 应用程序?

java - 为 MongoDB 使用 ORM

javascript - 如何停止绑定(bind)到 AMQP 默认交换?