Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongoose填充返回的objectid和空数组_Mongodb_Mongoose_Mongoose Schema_Mongoose Populate - Fatal编程技术网

Mongodb Mongoose填充返回的objectid和空数组

Mongodb Mongoose填充返回的objectid和空数组,mongodb,mongoose,mongoose-schema,mongoose-populate,Mongodb,Mongoose,Mongoose Schema,Mongoose Populate,我有一个集合模型,它的items属性包含一个Item模型数组 const CollectionSchema = new mongoose.Schema({ title: { type: String, required: true }, items : [{type : mongoose.Schema.Types.ObjectId, ref: 'Item'}] }); 我试图填充items数组以获取objectId的属性,但items数组

我有一个集合模型,它的items属性包含一个Item模型数组

const CollectionSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    items : [{type : mongoose.Schema.Types.ObjectId, ref: 'Item'}]
});
我试图填充items数组以获取objectId的属性,但items数组返回为空。(下面的代码是我如何填充items数组的。我首先使用req.body.search通过_id找到了我要查找的集合。然后运行.populate(“items”)来填充items数组。我得到的是一个空的items数组。)

我知道我的items数组不是空的,因为我可以在mongoDB上检查它是否已满。


奇怪的是,如果我将“collections”放入.populate参数,我的Items数组将返回stuff,但它只返回objectid,而不返回实际的对象属性。我不明白为什么.populate(“items”)不起作用。

如果您使用的是findById,那么为什么要指定
{u id:req.body.search}
。如果您的req.body.search是一种mongoose ObjectId字符串,那么您可以直接使用
findById(req.body.search)
来代替它。也可以简单地使用投影。find调用中的第二个参数是投影

如果您正在尝试仅获取项目数组,那么为什么不尝试此查询:-

Collection.findById(req.body.search, {items: 1}).then((result) => {
   console.log('Items are :-\n', result);
}, (err) => {
   console.log(err);
})

1表示包含,0表示排除。因此,项目将出现在输出中,并且_id是输出中的默认值。如果要排除_id,则可以将第二个参数更改为->
{items:1,_id:0}

没关系。问题是,当我通过mongoose推送项模型时,我忘记了执行items.save(),这意味着items数组不包含任何内容。

这确实有效,但结果再次注销了objectid数组,而不是对象属性。我想查看对象属性,而不是objectid。
Collection.findById(req.body.search, {items: 1}).then((result) => {
   console.log('Items are :-\n', result);
}, (err) => {
   console.log(err);
})