Hãy nói rằng chúng tôi có một bộ sưu tập các tài liệu như thế này:Tìm nếu một phần tử trong mảng có giá trị tương đương với giá trị phần tử cha mẹ
{
"_id" : ObjectId("591c54faf1c1f419a830b9cf"),
"fingerprint" : "3121733676",
"screewidth" : "1920",
"carts" : [
{
"cartid" : 391796,
"status" : "New",
"cart_created" : ISODate("2017-05-17T13:50:37.388Z"),
"closed" : false,
"items" : [
{
"brandid" : "PIR",
"cai" : "2259700"
}
],
"updatedon" : ISODate("2017-05-17T13:51:24.252Z")
},
{
"cartid" : 422907,
"status" : "New",
"cart_created" : ISODate("2017-10-23T08:57:06.846Z"),
"closed" : false,
"items" : [
{
"brandid" : "PIR",
"cai" : "IrHlNdGtLfBoTlKsJaRySnM195U"
}
],
"updatedon" : ISODate("2017-10-23T09:46:08.579Z")
}
],
"createdon" : ISODate("2016-11-08T10:29:55.120Z"),
"updatedon" : ISODate("2017-10-23T09:46:29.486Z")
}
Làm thế nào để bạn giải nén chỉ các tài liệu mà không có mục trong mảng $. xe có $ .carts.closed đặt thành true và $.carts.updatedon
lớn hơn $.updatedon
trừ 3 ngày?
tôi biết làm thế nào để làm tất cả các văn bản mà không có mục nào trong mảng thoả mãn các điều kiện $and: [closed: {$eq: true}, {updatedon: {$gt : new ISODate("2017-10-20T20:15:31Z")}}]
Nhưng làm thế nào bạn có thể tham khảo các yếu tố phụ huynh $.updatedon
cho việc so sánh?
Trong ngôn ngữ truy vấn vỏ đồng bằng mongodb, nó sẽ giúp bạn.
Nhưng tôi thực sự truy cập nó bằng cách sử C# tài xế, vì vậy bộ lọc truy vấn của tôi là như thế này:
FilterDefinition<_visitorData> filter;
filter = Builders<_visitorData>.Filter
.Gte(f => f.updatedon, DateTime.Now.AddDays(-15));
filter = filter & (
Builders<_visitorData>.Filter
.Exists(f => f.carts, false)
| !Builders<_visitorData>.Filter.ElemMatch(f =>
f.carts, c => c.closed && c.updatedon > DateTime.Now.AddDays(-15)
)
);
Làm thế nào tôi có thể thay thế DateTime.Now.AddDays(-15)
với một tham chiếu đến phần tử gốc tài liệu updatedon
?
Không chắc chắn nếu tôi thiếu một cái gì đó nhưng, nếu bạn sử dụng 'f.updatedon' trong khi so sánh' c.updatedon' không hoạt động? –
@VivekAthalye nope, bởi vì f không có sẵn ở bên phải của ElemMatch –