在 Mongodb 中,如何检查所有文档的值是否唯一?

发布于 2024-11-30 16:10:57 字数 236 浏览 0 评论 0原文

假设数据库中有 4 个文档:

{ name: 'alex' }
{ name: 'jen' }
{ name: 'alex' }
{ name: 'john'}

在 MongoDB Shell 中,我想知道2 个或更多文档是否共享相同的“名称”

基本上,如果所有名称都不同,则返回 true。 如果两个或两个人同名,则返回 false。

Let's say I have 4 documents in the database:

{ name: 'alex' }
{ name: 'jen' }
{ name: 'alex' }
{ name: 'john'}

In MongoDB Shell, I want to know if 2 or more documents share the same 'name'.

Basically, if all the names are different, return true.
If 2 or people have the same name, return false.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷情妓 2024-12-07 16:10:57

尝试一下,使用快速 map-reduce 查询 来查找具有名称相同,如果不同则返回 true:

function allDifferent() {
    var m = function() { emit(this.name, 1); }
    var r = function(key, emits) {
        var n = 0; emits.forEach(function(v) { n += v; }); return n;
    }
    var result = db.mycol.mapReduce(m, r, { out: "namecounts" });
    var allDifferent= (db.namecounts.count( { value: { $gt: 1 } } ) == 0)
    db.namecounts.drop();
    return allDifferent;
}

Try this, uses a quick map-reduce query to find the number of documents that have the same name, and returns true if they're all different:

function allDifferent() {
    var m = function() { emit(this.name, 1); }
    var r = function(key, emits) {
        var n = 0; emits.forEach(function(v) { n += v; }); return n;
    }
    var result = db.mycol.mapReduce(m, r, { out: "namecounts" });
    var allDifferent= (db.namecounts.count( { value: { $gt: 1 } } ) == 0)
    db.namecounts.drop();
    return allDifferent;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文