有人可以解釋這種行為嗎?
db.inventory.insertMany( [
{ item: "journal", instock: [ { warehouse: "A", qty: null }, { warehouse: "C", qty: 15 } ] },
{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
復制自https://docs.mongodb.com/v4.2/tutorial/query-array-of-documents/
但第一項instock.0.qty被替換為null.
因此,這個查詢會產生奇怪的結果:
> db.inventory.find({"instock.0.qty": null})
{ "_id" : ObjectId("6194329212c7421dbaaeac81"), "item" : "journal", "instock" : [ { "warehouse" : "A", "qty" : null }, { "warehouse" : "C", "qty" : 15 } ] }
{ "_id" : ObjectId("6194329212c7421dbaaeac82"), "item" : "notebook", "instock" : [ { "warehouse" : "C", "qty" : 5 } ] }
{ "_id" : ObjectId("6194329212c7421dbaaeac83"), "item" : "paper", "instock" : [ { "warehouse" : "A", "qty" : 60 }, { "warehouse" : "B", "qty" : 15 } ] }
{ "_id" : ObjectId("6194329212c7421dbaaeac84"), "item" : "planner", "instock" : [ { "warehouse" : "A", "qty" : 40 }, { "warehouse" : "B", "qty" : 5 } ] }
{ "_id" : ObjectId("6194329212c7421dbaaeac85"), "item" : "postcard", "instock" : [ { "warehouse" : "B", "qty" : 15 }, { "warehouse" : "C", "qty" : 35 } ] }
編輯:我只期待一個結果,但他們都回來了。
uj5u.com熱心網友回復:
此 Jira 票證中報告了類似問題:Incorrect filter result when using a null match inside an indexed array field。
提議的建議是$type用來檢查空值。
db.collection.find({
"instock.0.qty": {
$type: "null"
}
})
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359647.html
上一篇:MongoDB中的關系限制
