【问题标题】:In Mongodb , how do I check if all the documents are unique for a value?在 Mongodb 中,如何检查所有文档对于某个值是否是唯一的?
【发布时间】:2011-10-29 11:54:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: mongodb unique database


    【解决方案1】:

    试试这个,使用快速map-reduce query 查找具有相同名称的文档的数量,如果它们都不同则返回 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多