第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mongodb如何對含有內(nèi)嵌數(shù)組的集合進(jìn)行檢索

mongodb如何對含有內(nèi)嵌數(shù)組的集合進(jìn)行檢索

手掌心 2019-05-14 09:08:08
mongodb如何對含有內(nèi)嵌數(shù)組的集合進(jìn)行檢索
查看完整描述

2 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊


我用的是mongoose,不過也可以直接寫mongodb的查詢

var GoodSchema = new Schema({ name: String});

var ShopSchema = new Schema({
userId: Schema.ObjectId,
name: String,
point: {type: [Number], index: '2d'},
goods: [GoodSchema],
tags: {},
categorys: [String]
});

現(xiàn)在我想要根據(jù)給定的point 和商品名稱,查找某個點附近的店家里面誰有賣這里商品的
原先查詢語句是寫成
var userPoint = [118.4444, 24.4444]
var content = "耳機(jī)"
var regexp = new Regexp(content);
ShopModel.find({point: {$near: userPoint}, goods: {$elemMatch: {name: regexp}}}).limit(100).exec(cb)

然后發(fā)現(xiàn)返回過來的商店里面帶有的商品信息(goods)是所有的商品信息,不是我想要的只有匹配的商品的信息(mongodb 默認(rèn)返回整個文檔,除非你提供了projection)

接著去看了下mongodb的官方文檔的projection里面的$,$elemMatch
但是根據(jù)官方文檔里面講的,無論$,還是$elemMatch都是返回數(shù)組里面第一個匹配元素,并不能像我所需要的返回所有匹配的元素

然后還大概了解了下 map/reduce, 但是不知道是不是該用它,還是有其他什么解決方案
(主要是性能考慮,如果采用map/reduce 顯然對數(shù)組里面的每個元素都進(jìn)行了一次過濾,然后如果說商家數(shù)量多點,商品數(shù)量多點,會不會死的比較慘。。。)

================
還是說我這個數(shù)據(jù)結(jié)構(gòu)設(shè)計不合理,把商品單獨出來
var GoodSchema = new Schema({ name: String, shopPoint: {type: [Number], index: '2d'}, shopId: Schema.ObjectId});

var ShopSchema = new Schema({
userId: Schema.ObjectId,
name: String,
point: {type: [Number], index: '2d'},
tags: {},
categorys: [String]
});





查看完整回答
反對 回復(fù) 2019-05-15
  • 2 回答
  • 0 關(guān)注
  • 1568 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號