Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.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中的项目字段,直到sum=n_Mongodb_Mongodb Query - Fatal编程技术网

查询mongodb中的项目字段,直到sum=n

查询mongodb中的项目字段,直到sum=n,mongodb,mongodb-query,Mongodb,Mongodb Query,下面是按属性排序的样本采集结果 { "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"), "name" : "A", "discount" : 10 }, { "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"), "name" : "B", "discount" : 15 }, { "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2

下面是按属性排序的样本采集结果

{
    "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
    "name" : "A",
    "discount" : 10
},
{
    "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
    "name" : "B",
    "discount" : 15
},
{
    "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
    "name" : "C",
    "discount" : 20
},
{
    "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
    "name" : "D",
    "discount" : 30
} . 
希望编写一个查询,将文档投影到总和(折扣)

例如:查找所有单据,直到总和(折扣)=25

这将返回前2个文档。
输出:

{
        "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
        "name" : "A",
        "discount" : 10
    },
    {
        "_id" : ObjectId("5d96f8245e1ffa18e26dd2e2"),
        "name" : "B",
        "discount" : 15
    }
查找所有单据,直到总和(折扣)=45


这应该返回前3个文档

一个“名称”可以有多个折扣条目,它们应该相加?一张单据将有一个名称和一个折扣,这实际上不应该是一个数据库查询。这是导致各种RDBMS产品中功能膨胀的原因。您只需迭代游标的项目,并在实现“运行总数”后关闭游标,即可实现所需。简言之,这是一个“客户机代码”问题。@NeilLunn我在检查我们是否可以通过查询来做这件事。。无论如何,我会让pymongo实现同样的目标。所以MongoDB不能。一些非常不明智的人可能会建议使用
{“$group”:{“\u id”:null,“docs”:{“$push”:“$$ROOT”}
作为它的一部分,这实际上是将整个集合作为数组放入单个文档中。虽然这可能适用于琐碎的数据集(如您的问题中)这在现实世界中并不实用。相反,迭代光标,因为这就是它们的用途。如果您的数据实际上足够小,可以让可怕的黑客进行攻击,那么您甚至不需要数据库。