我基本上在mongo中使用$ all运算符,而得到的输入可能是数组或单个元素,如下所示。那么如何使用下划线将所有元素放在一个数组中然后
userId = 'a';
userIds = ['a', 'b', 'c'];
otherId = ['a'] or 'a';
searchArray = [userId, userIds, otherId]
db.collections.find({userIds: {$all: searchArray}})
答案 0 :(得分:6)
只要它们是数组,就可以使用 union 。
_.union(arrays)
var userId = ['a'],
userIds = ['a', 'b', 'c'];
otherId = ['a'],
searchArray = _.union(userId, userIds, otherId);
答案 1 :(得分:2)
如果不承诺所有变量都是数组,那么您可能需要flatten
方法。
userId = 'a'; // strings
userIds = ['a', 'b', ['c']]; // multidimensional array
otherId = ['a']; // single dimensional array
searchArray = _.flatten([userId, userIds, otherId]);
db.collections.find({userIds: {$all: searchArray}})
答案 2 :(得分:0)
不需要下划线,你可以使用concat:
var userId = ['a'],
userIds = ['a', 'b', 'c'],
otherId = ['a'];
var arr = userId.concat(userIds, otherId)
即使其中一个不是数组而只是数字或字符串,这也会有效。这里的工作示例: