Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-在另一个字段上使用$nin_Mongodb - Fatal编程技术网

MongoDB-在另一个字段上使用$nin

MongoDB-在另一个字段上使用$nin,mongodb,Mongodb,我正在使用MongoDB 2.6.7,并尝试运行以下查询 Categories.find({'_id': { $nin: ancestors }}) 其中Categories集合与MongoDB docs手册中使用的集合完全相同(带有祖先数组的模型树结构)。例: 但是我没有得到任何结果,所以我想知道是否有可能获得Categories集合中所有未包含在任何文档的祖先数组字段中的文档。。。换句话说,没有子类别的类别。您基本上需要在类别集合中的祖先中的所有类别的集合。如果您有此列表,则可以运行一个简

我正在使用MongoDB 2.6.7,并尝试运行以下查询

Categories.find({'_id': { $nin: ancestors }})
其中Categories集合与MongoDB docs手册中使用的集合完全相同(带有祖先数组的模型树结构)。例:


但是我没有得到任何结果,所以我想知道是否有可能获得Categories集合中所有未包含在任何文档的祖先数组字段中的文档。。。换句话说,没有子类别的类别。

您基本上需要在
类别
集合中的
祖先
中的所有类别的集合。如果您有此列表,则可以运行一个简单的查询:

> var ancestors = [ "Books", "Programming", "Databases" ];
> db.categories.find({ "_id" : { "$nin" : ancestors }});
如果您没有设置该
祖先
,那么可以使用聚合来获取它

> db.categories.aggregate([
    { "$unwind": "$ancestors" },
    { "$group":
        {
            "_id": null,
            "ancestors": { "$addToSet": "$ancestors" }
        }
    }
]);
{ "_id" : null, "ancestors" : [ "Databases", "Programming", "Books" ] }
您还可以使用
distinct()
获取此数组

根据该结果,您可以运行原始查询

> db.categories.aggregate([
    { "$unwind": "$ancestors" },
    { "$group":
        {
            "_id": null,
            "ancestors": { "$addToSet": "$ancestors" }
        }
    }
]);
{ "_id" : null, "ancestors" : [ "Databases", "Programming", "Books" ] }
> db.categories.distinct("ancestors");
[ "Books", "Databases", "Programming" ]