【发布时间】:2018-07-26 11:48:27
【问题描述】:
这是我的查询
model.db.aggregate([{$lookup: {from: 'orders', localField: 'prod_id',
foreignField: '_id', as: 'Col'}},{$match:{$text:
{$search:'Sale'}}}).exec((err,data) => {console.log(data);}]);
但错误显示“$match with $text is only allowed as the first pipeline !!”
我只想查找许多集合,然后只需要在我们之前加入(查找)的所有数据中匹配“搜索”。 mongoDb 版本:4.0
有人有想法吗?需要帮助!
谢谢!!
这些都是我的示例集合:
collection 1 ->
organization ={'_id':ObjectId("5b110a7b84a0442030a1e9cf"),'Org_name':'dhoni institute','Estd':'1945'}
collection 2 -> players= {'_id':ObjectId("45110a7b84a3542030a1e9cf"),'_name':'Ms dhoni','Org_id' = ObjectId("5b110a7b84a0442030a1e9cf") }
我正在 Db 中搜索文本字符串 'dhoni'。然后我想要这些集合中包含单词 'dhoni' 的所有文档。
怎么办?
db.players.aggregate([{$match:{$text:{$search:'dhoni'}}},
{
$lookup{from:'organization',localField:'_id',foreignField:'Org_id',as:'org'}
}
]).exec((err,data) => {}
这是我的代码 它只匹配“玩家”集合中的字符串。我需要匹配的“玩家”集合文档以及“组织”集合文档。
我无法创建新集合,因为循环后数据可能是一个巨大的数据,所以 每次搜索都无法插入新的大数据
查找后如何匹配字符串?
【问题讨论】:
-
试试
$mergeObjects方法,3.6以上版本请看文档docs.mongodb.com/manual/reference/operator/aggregation/lookup -
哎呀!我我的 mongodb 版本是 3.4 @Robus