我已经浏览了以下网站,但无法得到我的解决方案。 四舍五入到小数点后 2 位
我有以下小数并想四舍五入到最接近的整数:
34.56 => 35
34.67 => 35
34.12 => 34
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个:
"$subtract": [
"$x",
{ "$mod": ["$x", 1] }
]
Run Code Online (Sandbox Code Playgroud)
与Oracle Round 函数相同
我可以在 MongoDB 中做什么?
假设有以下记录:
{ text: "foo"},
{ text: "bar"}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到如下结果:
results: "foo bar"
Run Code Online (Sandbox Code Playgroud)
我最接近的是使用,$addToSet但这只是创建一个包含结果的数组,而不是我真正想要的单个字符串。
results: [ "foo", "bar" ]
Run Code Online (Sandbox Code Playgroud)
使用蒙戈3.4
date我有一个包含如下文档的集合,我想根据它们在数组中包含的最高值对文档进行排序status:
[{
"_id": "1",
"name": "Tea",
"status": [
{
"state": "a",
"date": "2019-08-22"
},
{
"state": "b",
"date": "2019-07-12"
},
],
"_id": "2",
"name": "Coffee",
"status": [
{
"state": "c",
"date": "2019-05-01"
},
{
"state": "b",
"date": "2019-12-31"
}
]
}]
Run Code Online (Sandbox Code Playgroud)
因此,在示例中,用于排序的值应类似于:
2019-08-22 (状态:a)2019-12-31 (状态:b)有任何想法吗?
如何在聚合管道中添加一个字段,将当前日期设置为值(类似于getdate()sql)
我需要在数据库(猫鼬)中查询并获取一种特定产品(一年内)一年中每个月的销售额。
我是节点和 mongoDb 的新手,我提供了一个“虚拟”解决方案,我在数据库中查询并获取一个产品的所有结果,然后我使用 3 个循环在几个月内分割结果,但我认为它使用了更多资源比应有的资源多,如果填充了更多数据,它将使用更多资源,因此我需要帮助进行数据库查询来解决该问题。
这是我的代码的一部分:
假设需要从17-02-2020到17-02-2019的结果,我知道如果是从1 月到12 月,它将毫无意义地进入一个循环,但我还有另一部分代码控制它是否需要 1年份结果例如:01-01-2020到31-12-2020它不会执行下面的代码,我正在谈论的代码只有一个循环哈哈。
let startTime = performance.now();
Sales.find({productId:req.params.productId, "created_at": { "$gte": oneYearFromNow, "$lte": dateNow}}).then(result => {
let newMonthsArray= new Array();
let monthsArray = ['January','February','March','April','May','June','July','August','September','October', 'November','December'];
let months = {};
for(let i=parseInt(req.params.startDate.substring(5,7))-1; i<12; i++){
let year = parseInt(req.params.startDate.substring(0,4))-1;
let month = parseInt(req.params.startDate.substring(5,7));
newMonth = monthsArray[i] + '-' + year;
newMonthsArray.push(newMonth);
months[newMonth] = 0;
}
for(let i=0; i<parseInt(req.params.startDate.substring(5,7)); i++){
let year = parseInt(req.params.startDate.substring(0,4)); …Run Code Online (Sandbox Code Playgroud) mongoose mongodb node.js mongodb-query aggregation-framework
有一个“String”类型的字段,其中包含对象/文档的表示
" {"a":35,b:[1,2,3,4]}"
Run Code Online (Sandbox Code Playgroud)
我知道这是一个奇怪的结构,但我无法改变它。我的目标是提取“a”的值。由于字符串表示的文档是嵌套和重复的,因此正则表达式不适合。那么我如何在 mongo db 聚合/查询中将此字符串转换为对象,以便我可以在以下聚合步骤中处理它?(可以用 python 提取字符串,制作一个字典并提取信息,但我想留在聚合管道内,因此具有更好的性能)
[
{
$match: {
$and: [
{
$or: [
{ assignee: 'eaa68f83-5024-4a8e-93f0-4b849d598585' },
{ parent: 'eaa68f83-5024-4a8e-93f0-4b849d598585' },
],
},
{ $and: [{ stage: 'COMPLETE' }] },
],
},
},
{ $group: { _id: null, valueSet: { $addToSet: '$_id' } } },
{ $project: { key: null, value: { $size: '$valueSet' } } },
]
Run Code Online (Sandbox Code Playgroud)
由于记录数 ($_id) 很大,因此出现以下错误。
$addToSet 使用了太多内存,无法溢出到磁盘。内存限制:104857600 字节
有什么解决办法吗?
是否可以根据聚合返回的变量设置条件聚合阶段?
例如
User.aggregate([
// if user has a property verified that returns true run aggregation pipeline
// one. Else run aggregation pipeline 2.
])
Run Code Online (Sandbox Code Playgroud) 这是我第一次使用 Net Core 和 MongoDB 创建系统,我通过将控制器中的所有输入参数发送到服务层以从数据库进行查询,成功地构建了具有排序和分页功能的完全可用的 CRUD。
这是我的“获取操作”的输入参数...
**public IActionResult Get(string userID, string sellerID, DateTime? dateFrom, DateTime? dateTo, string search, string sortValue, string filter, int offset = 0, int limit = 10)**
Run Code Online (Sandbox Code Playgroud)
我成功创建了 FilterdefinitionBuilder 和 SortDefinitionBuilder
**//MongoDB Definition Builder
#region MongoDB Definition builder
FilterDefinitionBuilder<OrderModel> filterBuilder = Builders<OrderModel>.Filter;
FilterDefinition<OrderModel> filterDefinition = filterBuilder.Empty;
SortDefinitionBuilder<OrderModel> sortBuilder = Builders<OrderModel>.Sort;
SortDefinition<OrderModel> sortDefinition = sortBuilder.Ascending(x => x.ID);
#endregion**
Run Code Online (Sandbox Code Playgroud)
#例子1
**if (sortValue.ToUpper() == "DESC")
{
sortDefinition = sortDefinition.Descending(x => x.ID);
}**
Run Code Online (Sandbox Code Playgroud)
#示例2
**//验证日期范围
#region dateFrom and dateTo …Run Code Online (Sandbox Code Playgroud) 有人可以帮我解决这种情况吗?
我有这个假 JSON...
[
{
"user": {
"type": "PF",
"code": 12345,
"Name": "Darth Vader",
"currency": "BRL",
"status": "ACTIVE",
"localization": "NABOO",
"createDate": 1627990848665,
"olderAdress": [
{
"localization": "DEATH STAR",
"status": "BLOCKED",
"createDate": 1627990848665
},
{
"localization": "TATOOINE",
"status": "CANCELLED",
"createDate": 1627990555665
},
{
"localization": "ALDERAAN",
"status": "INACTIVED",
"createDate": 1627990555665
},
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
code如果状态等于“已阻止”或“已取消”,我想删除该字段。我使用聚合是因为我在实际示例之前做了很多事情。我怎样才能做到这一点??
我需要这个结果:
[
{
"_id": ObjectId("5a934e000102030405000000"),
"user": {
"Name": "Darth Vader",
"createDate": 1.627990848665e+12,
"currency": "BRL",
"localization": "DEATH STAR",
"status": "BLOCKED",
"type": "PF"
}
}, …Run Code Online (Sandbox Code Playgroud)