Javascript 需要查询一个集合,同时引用和查询另一个集合
我有两个藏品,一个是材料,一个是材料照片。我使用了DBref(我想)来引用materialphotos集合。我不知道如何编写脚本,所以当用户输入搜索查询时,先查询material集合,然后再查询materialphotos集合以找到合适的图片。我认为更好的办法是重新设计数据库,但这不是我的职责。这里有一些到目前为止的代码,还有DBrefJavascript 需要查询一个集合,同时引用和查询另一个集合,javascript,mongodb,Javascript,Mongodb,我有两个藏品,一个是材料,一个是材料照片。我使用了DBref(我想)来引用materialphotos集合。我不知道如何编写脚本,所以当用户输入搜索查询时,先查询material集合,然后再查询materialphotos集合以找到合适的图片。我认为更好的办法是重新设计数据库,但这不是我的职责。这里有一些到目前为止的代码,还有DBref "id": "101", "photo": { "$ref": "materialphotos", "$id": Obj
"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
和引用集合的另一个普通属性,或者使用带有“目标集合”的外部“模式”声明。