假设我有这样一个MongoDB文档:
{
"_id" : ObjectId("xxxx-xxxx"),
"name" : "judge dredd",
"docs" : {
"readme-1" : "Please do!",
"readme-2" : "Go ahead...",
"readme-n" : "foo bar"
}
}如何创建一个文本索引,它可以索引和搜索对象docs的任何值,但不能搜索其他值?
docs文档中的键可能是任何问题,我不知道它们是什么。
MongoDB文档提到一个通配符运算符:
db.collection.createIndex( { "$**": "text" } )但这会索引每个字符串,包括我不想要的name。标准的方法似乎使用了点属性:
db.collection.createIndex( { "docs.readme-1":"text", "docs.readme-2":"text, ... } )但如前所述,对象键可能是任何东西,我不知道它们的前期。
如果不可能,是否有更好的方法重新安排我的数据文档,使之成为可能?
发布于 2018-07-26 19:26:05
您可以使用所需对象的引用创建另一个模型,例如:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const idSchema = new Schema ({
name:{type:string,required:true},
documentReferenced:{Schema.Types.ObjectId, ref:'documentReferenced'}
});
module.exports = mongoose.model('Id ', idSchema);然后,当您需要调用您的documentReferenced或任何您称为它时,您只需执行以下操作
Id.findOne({name:req.body.name}).populate('documentReferenced').exec(( err, document)=> {
your code here....
});我不知道是否还有更好的方法来满足你的需要,但这可能是一个很好的解决办法。
https://stackoverflow.com/questions/51545914
复制相似问题