Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?

Posted

技术标签:

【中文标题】Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?【英文标题】:Meteor / MongoDB - How to prove whether any item in an array is equal to a specific value and than $pull an item from another array in case 'true'?Meteor / MongoDB - 如何证明数组中的任何项目是否等于特定值,而不是在“真”的情况下从另一个数组中提取项目? 【发布时间】:2017-07-07 06:18:30 【问题描述】:

我的问题是,我写了以下代码:

Meteor.methods(

    'pushItems': function (itemId) 
    var specificValue = "12";

    if (this.userId) 
      userManagement.update(
        '_id': this.userId
    , 
        $push: 
          'itemIds': itemId,
          'values': specificValue
                   
               
            );
         
       
    );

在我调用此方法后,具有“itemId”的一项存储在数组“itemIds”中,而一项具有“12”的项存储在数组“values”中。所有这些都发生在一个用户对象中。

现在,我需要编写一个函数来检查“12”是否在用户的“值”内,如果这是“真”,它应该将按时间顺序添加的第一个 itemId [0] 从数组中拉出itemIds'。

【问题讨论】:

【参考方案1】:

下面的方法会在values数组中找到包含参数(值)的文档,并从itemId数组中删除[0]处的项

Meteor.methods(
    'pullItems': function (value) 
        return userManagement.update(
             values: value , 
             $pop:  itemId: -1 
        );
     
);

【讨论】:

非常感谢。 $pop 命令是搜索的内容,并解决了我至少 50% 的问题。但是, values: value 不起作用(“意外标识符”)并且应用程序崩溃。也许有一种方法可以使用“if”和搜索/查找功能来解决这个问题?事实上,我只需要声明一个变量并说'如果这个变量在'values'中,则执行$pop 工作。我正在考虑它,但我不够专业:D 此外,我有一个一般性问题(我知道这是一个很愚蠢的问题):“返回”到底是什么?谢谢。 没有问题!我不确定为什么values: value 不起作用。这应该在对象的values 数组中搜索传递给该方法的“值”。尝试if 声明,如果您无法管理它,请在此处评论,我会帮助您。 return 语句基本上只是将更新调用的结果返回给客户端。你真的不需要return 声明,但我把它放在那里作为习惯 啊,我知道为什么价值观不起作用了。我只是忘了从 Meteor.call 传递它。但它不只是在值数组中找到“值”。它将一个全新的文档写入该用户并删除其他文档(我猜它会删除它们,因为我们省略了 $push 或某事。)。但是,我不需要向用户写入任何新文档,我只需要知道该值是否在那里,如果是这种情况,它应该 $pop in 'itemIds'。我将尝试编写if- 函数并将其发布以说明我的意思。谢谢! 所以,我知道它不起作用,但它应该澄清我的需求: Meteor.methods( 'pullItems': function () var value = "Int32"; if (this. userId && userManagement.find( "values": $gt: value === true)) userManagement.update( '_id': this.userId , $pop: 'itemId': -1 ); ; ); .我需要找出 ItemId-Array 中是否有大于 value 的项。如果这是真的,请执行“userManagement.update ($pop job)。

以上是关于Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor/Mongodb - 数组、子文档和重叠订阅

MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误

在 Meteor 运行时,如何从另一个客户端访问 Meteor 的 MongoDB?

Meteor -- 如何连接到 mongodb? [复制]

如何将 mongodb 客户端连接到本地 Meteor MongoDB

Meteor 如何接收对 MongoDB 查询结果的更新?