MongoDB查找ID数组

时间:2018-07-09 09:23:19

标签: mongodb meteor

我有一个具有文档ID的数组。

var ids = [ '5b3c7db4c079dc17dc75fc26', '5b3c7db4c079dc17dc75fc28' ]

我有一个叫做Machines的集合,里面有文件。 enter image description here

我正在尝试使用数组中的ID从Machines集合中获取文档。

Machines.find({ _id : { $in : ids } }).fetch();

这将返回[]

3 个答案:

答案 0 :(得分:1)

您的

var ids = [ '5b3c7db4c079dc17dc75fc26', '5b3c7db4c079dc17dc75fc28' ]

看起来像是十六进制字符串或本机MongoDB BSON类型的ObjectID。

试试流星的蒙哥吧

import { Mongo } from 'meteor/mongo';

const ids = [
  new Mongo.ObjectID('5b3c7db4c079dc17dc75fc26'),
  new Mongo.ObjectID('5b3c7db4c079dc17dc75fc28'),
]

Machines.find({ _id : { $in : ids } }).fetch();

为获得更好的语法,请使用.map()获取Mongo.ObjectID类型ID的新数组。

import { Mongo } from 'meteor/mongo';

const ids = ['5b3c7db4c079dc17dc75fc26', '5b3c7db4c079dc17dc75fc28', ...];
const mongoIds = ids.map(id => new Mongo.ObjectID(id));

Machines.find({ _id : { $in : mongoIds } }).fetch();

// if ids were ObjectIDs instead of literal strings
const objectIdToMongoIds = ids.map(id => new Mongo.ObjectID(id.toString()));
Machines.find({ _id: { $in: objectIdToMongoIds } });

答案 1 :(得分:0)

尝试一下:

createModel = createModel.groupby(cols).size().reset_index(name='count')

因为Mongodb将ID存储为var ids = [ ObjectId("5b3c7db4c079dc17dc75fc26"), ObjectId("5b3c7db4c079dc17dc75fc28") ]

答案 2 :(得分:0)

您也可以尝试Machine.findById(req.params.id, () => {}