gpt4 book ai didi

node.js - MongoDB 查询条件和预测

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:57 24 4
gpt4 key购买 nike

我正在使用 Node/Express/MongoDB/Mongoskin 构建应用程序。

我的数据库中有一个名为“clients”的集合,其中包含有关客户帐户信息的文件。每个客户文档都包含一个包含发票对象的数组,如下所示:

doc.invoices = [
{year: 2012,
quarter: 1,
daily: 912.00,
sms: 42.00,
paid: true},

{year: 2012,
quarter: 2,
daily: 913.00,
sms: 55.00,
paid: true},

{year: 2012,
quarter: 3,
daily: 876.00,
sms: 82.00,
paid: true},

{year: 2012,
quarter: 4,
daily: 903.00,
sms: 93.00,
paid: false},

{year: 2013,
quarter: 1,
daily: 915.00,
sms: 67.00,
paid: true},

{year: 2013,
quarter: 2,
daily: 920.00,
sms: 35.00,
paid: true},

{year: 2013,
quarter: 3,
daily: 880.00,
sms: 92.00,
paid: true},

{year: 2013,
quarter: 4,
daily: 900.00,
sms: 85.00,
paid: false}
]

问题:假设我想查询此集合中的所有文档,就像在显示所有客户的 super 管理员 View 中一样,但我想将发票数组返回的信息限制为对象,其中"year"等于某个值,例如 2013,当前年份。

我想投影是我需要的,但问题是投影只返回它找到的第一个结果......

最佳答案

首先,projection 不会返回它找到的第一个结果,它会告诉 mongo 返回什么。

.findOne(query) 会将结果限制为一个,或者 find(query).limit(1) 也会做同样的事情。

您说您正在尝试“获取所有”数据。

标准的查找类型查询将使您开始...

find({mongo:query},{mongo:projection})

但将结果限制为来自 mongo shell 的游标*

因为你说你使用 express.js,你可以使用 javascript 函数来“返回所有”像这样的简单查找的结果......

db.sales.find({"year":2013},{_id:0,"year":1,"quarter":1,"daily":1,"sms":1,"paid":1}) 

首先设置一个函数的路由

app.get('/sales/yr/:yr', sales.getAllResults);

然后是处理简单的 mongo 查询和投影的函数。

/**
* get ALL results given YEAR ONLY
* extend jsonQuery to modify results
* extend or reduce jsonProjection to control data returned
*/
exports.getAllResults= function(req, res) {
var yr = req.params.yr ;
var jsonQuery = {"year":yr} ; //add or remove comma seperated "key":values given your JSON collection
var jsonProjection = {_id:0,"year":1,"quarter":1,"daily":1,"sms":1,"paid":1} ; //leave year out since that's specified in the query anyhow
var jsort = {"some-thing-else":-1} ; //-1 descending or 1 ascending
db.collection("YOUR-COLLECTION_NAME", function(err, collection) {
collection.find( jsonQuery, jsonProjection).sort(jsort).toArray( function(err, items) {
res.send(items);
});
});
}

最后,您可能想要学习 express 和 mongo 的教程,其中有一些不错的教程,我根据 Chris Coenraets 的出色入门将这个答案放在一起,请参阅:-

http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/

  • 使用标准的 mongo 查询 shell,默认情况下您仅限于分页结果集,其中键入“it”将遍历结果。

关于node.js - MongoDB 查询条件和预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com