嗨所以我在mongo中使用mongoengine测试数据用于存储用户的购物车:
{
"_id" : ObjectId("55e492ac516ddc17a8b07d2a"),
"user" : ObjectId("55e3f236516ddc78296968be"),
"items" : [
{
"item" : ObjectId("55e24cd6516ddcbdc081842b"),
"quantity" : 2,
"added_date" : ISODate("2015-08-31T17:44:49.023Z")
},
{
"item" : ObjectId("55e24cd6516ddcbdc0818425"),
"quantity" : 3,
"added_date" : ISODate("2015-08-31T17:44:49.025Z")
},
{
"item" : ObjectId("55e24cd6516ddcbdc0818420"),
"quantity" : 3,
"added_date" : ISODate("2015-08-31T17:44:49.026Z")
}
]
}
Run Code Online (Sandbox Code Playgroud)
这里的模型:
class CartItem(mongoengine.EmbeddedDocument):
item = mongoengine.ReferenceField('Item')
quantity = mongoengine.IntField()
added_date = mongoengine.DateTimeField(default=datetime.now())
class Cart(mongoengine.Document):
user = mongoengine.ReferenceField('User')
items = mongoengine.EmbeddedDocumentListField(CartItem)
Run Code Online (Sandbox Code Playgroud)
在这里,我将项目存储在用户的购物车中.现在我想获取项目列表字段中的所有唯一项目,因为会有重复的项目.
我执行以下查询来获取项目:
cart = Cart.objects.filter(user=user).first()
queryset = cart.items
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为我必须对项目进行分组,我尝试在过滤器中使用原始查询:cart.items.filter(__raw__...) 但这不起作用,因为在这种情况下不支持raw.有人可以帮助我如何做到这一点?谢谢!
我将 django 与 mongo 一起使用,我有这种类型的模型:
class ProductDate(EmbeddedDocument):
created = DateTimeField()
updated = DateTimeField(null=True)
class Product(Document):
product_id = IntField()
saves = IntField(default=0)
title = StringField(max_length=1000)
gender = StringField(choices=settings.GENDER_CHOICES, default=settings.UNISEX, max_length=50)
date = EmbeddedDocumentField(ProductDate)
Run Code Online (Sandbox Code Playgroud)
现在,当我进行这样的查询时:
queryset = queryset.filter(title=search)
Run Code Online (Sandbox Code Playgroud)
我想首先按创建的日期时间字段中的日期排序,然后按保存排序。这样,具有相同日期而不是时间的产品将按保存次数排序。但是,我似乎找不到将硅藻土转换为日期的方法,以便它仅比较日期。
我不能这样做:
.order_by("-date__created","-saves")
Run Code Online (Sandbox Code Playgroud)
因为这是根据时间排序的。
我尝试在 mongo 中使用聚合,通过本教程:
但这对我没有帮助。
有人可以指导我如何做到这一点吗?谢谢你!
我有以下型号。
class ReservedSlug(models.Model):
slug = models.SlugField(
max_length=80,
unique=True,
)
class SubClass(ReservedSlug):
name = models.CharField(
max_length=100,
)
Run Code Online (Sandbox Code Playgroud)
现在数据库中发生的事情是 SubClass 与以下 ReservedSlug 基类有外键关系:
CONSTRAINT reservedslug_ptr_id_f48f6b16_fk_utils_reservedslug_id FOREIGN KEY (reservedslug_ptr_id)
REFERENCES public.utils_reservedslug (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
DEFERRABLE INITIALLY DEFERRED
Run Code Online (Sandbox Code Playgroud)
同时,它将主键设置为以下内容:
CONSTRAINT subclass_newsubclass_pkey PRIMARY KEY (reservedslug_ptr_id),
Run Code Online (Sandbox Code Playgroud)
我的目标是一起删除对 Reserved slug 的引用,并且让 reservedslug_ptr_id 成为 SubClass 模型中的 IntegerField。
这是我在迁移中尝试过的方法之一:
database_operations = [
migrations.AlterField(
model_name="subclass",
name="reservedslug_ptr_id",
field = models.ForeignKey('reservedslug_ptr_id', db_constraint=False, db_index=True, null=False)
)
]
state_operations = [
migrations.AlterField(
model_name='subclass',
name='reservedslug_ptr',
field=models.IntegerField(db_index=True, null=False), …Run Code Online (Sandbox Code Playgroud) 我试图将所有列表列表合并为一个.
到目前为止,这是我的代码:
(DEFUN DESCRIPTION (BLOCK)
(loop initially (setf result '())
for desc in (DESC2 BLOCK)
do (append result desc)
finally (return result)
)
)
Run Code Online (Sandbox Code Playgroud)
函数(DESC2 BLOCK)返回以下内容:
((SHAPE BRICK) (COLOR GREEN) (SIZE SMALL) (SUPPORTED-BY B2) (SUPPORTED-BY B3))
Run Code Online (Sandbox Code Playgroud)
我只需要函数返回一个合并列表:
(SHAPE BRICK COLOR GREEN SIZE SMALL SUPPORTED-BY B2 SUPPORTED-BY B3)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多方法并且已经研究了很多.我很抱歉,但我不完全了解LISP语言,如果你能帮助我,我将不胜感激!
先感谢您!
django ×3
mongodb ×2
mongoengine ×2
python ×2
common-lisp ×1
datetime ×1
lisp ×1
list ×1
merge ×1
postgresql ×1