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 - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB & Meteor - 推入嵌套数组的查询不起作用,没有抛出错误
在 Meteor 运行时,如何从另一个客户端访问 Meteor 的 MongoDB?