2
我的transactions
集合中包含以下文檔。
{txnId: 1, amount: 200, tags:["monthly", "recharge"]},
{txnId: 2, amount: 4000, tags:["monthly", "salary"]},
{txnId: 3, amount: 1000, tags:["monthly", "waterbill"]},
{txnId: 4, amount: 400, tags:["monthly", "electricity"]},
{txnId: 5, amount: 300, tags:["dinner", "daily"]}
我想獲取所有這些都具有月但不工資的文件
某些查詢我試圖和它們各自的輸出:
查詢1:
db.transactions.find({tags: {$elemMatch: {$in: ["monthly"], $nin: ["salary"]}}})
輸出1:
{txnId: 1, amount: 200, tags:["monthly", "recharge"]}
{txnId: 2, amount: 4000, tags:["monthly", "salary"]}
{txnId: 3, amount: 1000, tags:["monthly", "waterbill"]}
{txnId: 4, amount: 400, tags:["monthly", "electricity"]}
問題2:
db.transactions.find({tags: {$nin: ["salary"]}})
輸出2:
{txnId: 1, amount: 200, tags:["monthly", "recharge"]}
{txnId: 3, amount: 1000, tags:["monthly", "waterbill"]}
{txnId: 4, amount: 400, tags:["monthly", "electricity"]}
{txnId: 5, amount: 300, tags:["dinner", "daily"]}
問題3:
db.transactions.find({tags: {$nin: ["salary"]}, tags: {$elemMatch: {$in: ["monthly"]}}})
輸出3:
{txnId: 1, amount: 200, tags:["monthly", "recharge"]}
{txnId: 2, amount: 4000, tags:["monthly", "salary"]}
{txnId: 3, amount: 1000, tags:["monthly", "waterbill"]}
{txnId: 4, amount: 400, tags:["monthly", "electricity"]}
爲什麼$在和$萬年沒有一起工作,甚至$萬年無法按預期工作?還是我誤解了?
我太想你的查詢,仍然沒有能夠證明如何'$ nin'和'$ in'一起工作。但下面的查詢幫助我實現了預期的結果'db.test.find({「$ and」:[{tags:「monthly」},{tags:{$ ne:「salary」}}]})' – Nattyk
讓我知道如果上述查詢現在可以幫助你。無論如何,$ nin和$ in在一起的工作仍然是開放的! – Nattyk