Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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
Javascript 如何使用MongoDB查找与自定义字段匹配的文档?_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript 如何使用MongoDB查找与自定义字段匹配的文档?

Javascript 如何使用MongoDB查找与自定义字段匹配的文档?,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在尝试查找与node.js中的自定义字段匹配的所有文档 node.js代码: req.app.db.models.Property.find({ user: { id: req.params.id } }).exec(function(err, user) { if (err) { return next(err); } console.log("id:" + req.params.id); console.log("user:" + user);

我正在尝试查找与node.js中的自定义字段匹配的所有文档

node.js代码:

req.app.db.models.Property.find({
  user: {
    id: req.params.id
  }
}).exec(function(err, user) {
  if (err) {
    return next(err);
  }
  console.log("id:" + req.params.id);
  console.log("user:" + user);
  res.status(200).json(user);
});
但是,控制台显示如下

id:5941cfc42df14b2fe811d531
user:
模式如下所示

user: {
      id: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
      name: { type: String, default: '' },
      email: { type: String, defaul: ''}
    },
propertyType: { type: String, default: '' },
    ..........
    }
似乎找不到文件。
这个怎么了?属性集合上存在多个文档。

问题在于您的查询,它查找的用户仅具有对象id。 因此,您实际上将“user”与“{id:req.params.id}”等同起来,后者只返回id参数。因此,对于您的解决方案,请执行以下操作:

var query = {'user.id':req.params.id}
Property.find(query).exec(function(err, user) {
  if (err) {
    return next(err);
  }
如果要指定返回的对象的类型(如果找到)。 你可以这样说:

Property.find(query,'user.id user.name').exec(...)

这将返回一个仅包含用户id和电子邮件的对象,而不包含名称

.find({“user.id”:req.params.id})
。正在使用
{“user”:{“id”:req.params.id}
查找在“user”键下除了“id”属性之外没有其他内容的文档。这当然不是真的,因为它与模式不一致。请参阅核心文档中的。嗨,尼尔。我刚刚用.find({“user.id”:req.params.id})签出,它现在可以工作了。你能提供一个答案吗?