Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 我可以基于多个文档进行查询吗?_Mongodb - Fatal编程技术网

Mongodb 我可以基于多个文档进行查询吗?

Mongodb 我可以基于多个文档进行查询吗?,mongodb,Mongodb,我有一个文档集合,每个文档都应该有另一个匹配的文档。(这不是出于设计,只是针对我当前的操作。)但是,集合中文档数量的当前计数是奇数。是否有一种方法可以查询其他文档未共享的键的值 例如,如果我有这样的收藏: {_id:'dcab0001', foo: 1, bar: 'dfgdgd'} {_id:'dcab0002', foo: 2, bar: 'tjhttj'} {_id:'dcab0003', foo: 1, bar: 'ydgdge'} {_id:'dcab0004', foo: 3, ba

我有一个文档集合,每个文档都应该有另一个匹配的文档。(这不是出于设计,只是针对我当前的操作。)但是,集合中文档数量的当前计数是奇数。是否有一种方法可以查询其他文档未共享的键的值

例如,如果我有这样的收藏:

{_id:'dcab0001', foo: 1, bar: 'dfgdgd'}
{_id:'dcab0002', foo: 2, bar: 'tjhttj'}
{_id:'dcab0003', foo: 1, bar: 'ydgdge'}
{_id:'dcab0004', foo: 3, bar: 'jyutkf'}
{_id:'dcab0005', foo: 3, bar: 'pofsth'}

我可以在
foo
上执行查询,返回id为
dcab0002

的文档。您可以使用MapReduce或在MongoDB 2.2+中使用

下面是一个使用聚合框架的示例:

db.pairs.aggregate(

    // Group by values of 'foo' and count duplicates
    { $group: {
        _id: '$foo',
        key: { $push: '$_id' },
        dupes: { $sum: 1 }
    }},

    // Find the 'foo' values that are unpaired (odd number of dupes)
    { $match: {
        dupes: { $mod: [ 2, 1 ] }
    }}

    // Optionally, could add a $project to tidy up the output
)
样本输出:

{
    "result" : [
        {
            "_id" : 2,
            "key" : [
                "dcab0002"
            ],
            "dupes" : 1
        }
    ],
    "ok" : 1
}

你可以用map/reduce来做这件事,你基本上是在寻找所有不同的()文档吗?据我所知,他只想要foo=2的文档,因为它没有一对。他不想得到有一对的文件。