gpt4 book ai didi

javascript - MongoDB - 如果对象包含小于 x 的值,如何删除数组中的对象?

转载 作者:行者123 更新时间:2023-12-03 03:45:57 25 4
gpt4 key购买 nike

我将 Meteor 与 mongoDB 一起使用,如果“removeTime”字段低于给定值,我需要从数组中 $pull 整个对象。

集合“items”中的文档具有以下结构:

{
"_id" : "Guy1",
"solvedItems" : {
"items" : [
{
"itemPush" : "item1-b41f50bc24397735_ABC>14607a25c0864858",
"actualTime" : 1501281170509.0,
"removeTime" : 3532817170509.0
},
{
"itemPush" : "item2-691aa30080189962_ABC>14607a25c0864858",
"actualTime" : 1501281255771.0,
"removeTime" : 1532817255771.0
}
]
}
}

例如,给定值为var GiveValue = 2532817255771.0。因此,目标是删除 items 数组中的第二个对象,但第一个对象保留在文档中:

{
"_id" : "Guy1",
"solvedItems" : {
"items" : [
{
"itemPush" : "item1-b41f50bc24397735_ABC>14607a25c0864858",
"actualTime" : 1501281170509.0,
"removeTime" : 3532817170509.0
}
]
}
}

我尝试了许多使用 $elemMatch 和 $pull 的方法,但没有任何效果。这是我现在拥有的:

Meteor.methods({
'pullItem': function () {

//Set the givenValue
var givenValue= 2532817255771.0;

//In case there is an element, which is lower than givenValue, execute
if(items.findOne({'_id': "Guy1", 'solvedItems.items': {$elemMatch: {'removeTime':{$lt:givenValue}}}})) {

items.update({'_id': "Guy1"}, {

$pull: {
'solvedItems.items': // Absolutely no idea how to do it
}
});
console.log('pulledOut')
} else {
console.log('letItStayInside')}
}});

我不知道如何删除包含最低值的对象。

最佳答案

我认为你的问题可以通过 JS 数组上的基本过滤功能来解决

var result = {};
var givenValue = 2532817255771.0;
var tmp = {
"_id" : "Guy1",
"solvedItems" : {
"items" : [
{
"itemPush" : "item1-b41f50bc24397735_ABC>14607a25c0864858",
"actualTime" : 1501281170509.0,
"removeTime" : 3532817170509.0
},
{
"itemPush" : "item2-691aa30080189962_ABC>14607a25c0864858",
"actualTime" : 1501281255771.0,
"removeTime" : 1532817255771.0
}
]
}
}

result = tmp.items.filter(function (element){return element.removeTime < givenValue});

结果是预期的数组,另一个属性可以自己重新分配,我认为这不是问题。

关于javascript - MongoDB - 如果对象包含小于 x 的值,如何删除数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390075/

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