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
Javascript 需要查询一个集合,同时引用和查询另一个集合_Javascript_Mongodb - Fatal编程技术网

Javascript 需要查询一个集合,同时引用和查询另一个集合

Javascript 需要查询一个集合,同时引用和查询另一个集合,javascript,mongodb,Javascript,Mongodb,我有两个藏品,一个是材料,一个是材料照片。我使用了DBref(我想)来引用materialphotos集合。我不知道如何编写脚本,所以当用户输入搜索查询时,先查询material集合,然后再查询materialphotos集合以找到合适的图片。我认为更好的办法是重新设计数据库,但这不是我的职责。这里有一些到目前为止的代码,还有DBref "id": "101", "photo": { "$ref": "materialphotos", "$id": Obj

我有两个藏品,一个是材料,一个是材料照片。我使用了DBref(我想)来引用materialphotos集合。我不知道如何编写脚本,所以当用户输入搜索查询时,先查询material集合,然后再查询materialphotos集合以找到合适的图片。我认为更好的办法是重新设计数据库,但这不是我的职责。这里有一些到目前为止的代码,还有DBref

"id": "101",
    "photo": {
        "$ref": "materialphotos",
        "$id": ObjectId("57041fc125e2433c200987ff")
    },

    "material_name": "Something",
JS代码:

var Search = function(materialName) {
     db.collection('materials').find({"material_name": materialName}).toArray(function(err, results) {
        console.log(results);
    });
     db.collection('materials').find({'photo.$id': ObjectId("57041fc125e2433c200987ff")});

  }
@例如,一组产品,每个产品都有自己的文档,将包含一个字段“Parts”,用于引用该产品的所有零件;“部件”字段将包含引用部件集合的ObjectID数组。我描述得对吗?下面是一些代码:

> db.products.findOne()
{
    name : 'left-handed smoke shifter',
    manufacturer : 'Acme Corp',
    catalog_number: 1234,
    parts : [     // array of references to Part documents
        ObjectID('AAAA'),    // reference to the #4 grommet above
        ObjectID('F17C'),    // reference to a different Part
        ObjectID('D2AA'),
        // etc
    ]

你到底在搞什么?你似乎认为
DBRef
“自动解析”到另一个集合中的对象。事实并非如此。一些“驱动程序”有这样的功能,但“大多数”没有
DBRef
是一种邪恶而过时的引用另一文档中数据的方法,无论数据位于何处。出于许多原因,最好使用标准的
ObjectId
和引用集合的另一个普通属性,或者使用带有“目标集合”的外部“模式”声明。